`
ihuashao
  • 浏览: 4744811 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

为什么俺推荐Python[1]:作为脚本语言的Python

阅读更多

  俺窃以为,Python的所有特征中,作为脚本语言 (具体定义参见“这里 ”)是它的首要特征。因此,在本系列帖子中,俺首先来忽悠一下Python作为脚本语言,有些啥好处?<!-- program-think-->

  ★脚本语言好在哪?
  要聊Python作为脚本语言的好处,首先得说说脚本语言自身有哪些优点。一般来说,当我们提及“脚本语言”,都是强调其解释执行的特性(虽然有些脚本语言也支持编译)。所以,后面陈述的这些优点,大都是拿编译型语言来进行对比。

  ◇更高层次的抽象和封装
   大部分脚本语言都提供了比较高层次的抽象和封装。像很多脚本语言都内置了字符串处理能力以及正则表达式(典型代表就是Perl)。还有很多脚本语言都内 置了高级的数据结构。比如Python在语言层面支持了链表(Python的术语叫List)、映射(Python的术语叫Dict)、元组 (Python的术语叫Tuple)。
  有了这些高层次的封装,你写起代码来,就特别滴简单、特别滴爽。比如,在Python中要把一个List翻倍,只需这么写:[1,2,3] * 2 就得到 [1,2,3,1,2,3]

  ◇更少的代码量
  得益于高层次的封装,在完成相同功能的前提下,脚本语言的代码量会比编译型语言少很多。
  比如说,要打印出某个文本文件的内容,如果用Java实现,正常的写法大概要七、八行代码(把所有代码硬挤到一行的,不予讨论);用Python也就三、五行。
  再比如说,抓取给定URL的web网页,用Python自带的标准库实现,大概3-5行代码;但如果用C++实现,代码量会增加许多(具体要写多少代码,取决于你用的http库)。
  代码量少了之后,至少你看代码的时候(无论是看自己的还是看别人的),能少敲很多次的翻页键,大大延长了键盘的寿命,顺便降低了手指头的劳损。

  ◇更平缓的学习曲线
  通常,脚本语言的语法都比较简单、傻瓜化。因此,入门也就容易很多。稍微有一些编程基础的人,就能够在短时间内上手。
  比如俺手下的C++、Java程序员,以及某些测试人员,都可以在一周内(程序员用不着一周,一般就1、2天)掌握Python的语法并用来写一些辅助的小工具。大大减少了俺培训的口水。

  ◇支持交互式
  很多脚本语言的IDE支持交互式写代码。也就是说,你每写完一行代码,解释器就执行一把。这样能很快发现输入错误,而且还可以立即看到执行结果。

  ★脚本语言有啥缺点?
  前面说了那么多优点,那脚本语言有啥缺点捏?主要的缺点就是性能差。这是他们为上述优点所付出的沉重代价。所幸当今的计算机硬件突飞猛进,性能差的缺点已经越来越不明显了。

  ★Python和其它脚本语言的比较
  有同学可能要问了,脚本语言有很多,为啥俺独独青睐Python捏?为了回答这个问题,俺拿Python和一些常见的脚本语言作一些肤浅的比较。
  鉴于后面的内容极易引发语言的口水战,俺特此声明:虽然接下来会提及某些语言相对于python的缺点,但俺绝无贬低这些语言的企图,也无意证明python比这些语言优秀!俺只是陈述一下当初是如何在几种脚本语言中进行取舍的?
   除了Python之外,常见的脚本语言还有很多,比如:PHP、JavaScript(以下简称JS)、Perl、VBScript(以下简称 VBS)、Ruby、Bash、Lua、Tcl(可别误以为是某家电厂商:-)......Python是如何从这些脚本语言中脱颖而出的捏?俺挑选的时 候,主要考虑了如下几点:

  ◇通用性(跨领域)
  因为俺懒得学太多编程语言。所以,俺希望熟悉一门脚本语言之后,能够尽量多帮俺搞定不同领域的事儿。从这点来看,俺就不会选择PHP(太偏重于Web服务端)、JS(太偏重于Web客户端)、诸如Bash之类的Shell脚本(太偏重于系统管理)。
  而Python则属于通用的脚本语言,覆盖范围很广。比如Web开发、桌面GUI应用、系统管理、网络应用等许多领域,Python都可以轻易搞定。

  ◇人气够旺
  关于“人气”的重要性,俺在“如何选择开源项目 ”中,有介绍过。人气越高、越流行,就意味着更多的资源(包括文档、相关软件),当你碰到问题需要解决,也有更多的人可以咨询。
  关于编程语言的流行程度,可以大致参考TIOBE 的排名(虽然TIOBE不能全面反映流行程度,但至少可作为某种参考)。
  像Tcl、PowerShell、Groovy、JavaFX等都排在30名之外(截至到09年8月),感觉用的人少,俺暂时不予考虑。而Python最近几年的排名则一路上升(请看“这里 ”),截止到09年8月,已经高踞排行榜第6位。Perl虽然也身居高位,但是最近几年的排名一路下滑(请看“这里 ”)。俺个人认为,其人气不容乐观。

  ◇功能够强、库够丰富
  另一个俺很看重的地方是功能是否够强大。在这点上,Python和Perl都算是比较强悍的。关于Python如何强悍,俺会在后续的帖子“作为瑞士军刀的Python”中加以介绍。
  反观JS、Ruby、Tcl等语言,则稍显不足(当然,也有可能俺孤陋寡闻)。

  ◇跨平台
  由于俺平时会使用不同的操作系统,再加上俺负责的产品也是跨平台的。所以,俺对脚本语言有跨平台的要求。说到跨平台,诸如VBS、Bash之流就不予考虑了。
  其实,很多脚本语言都支持跨平台。而Python在这方面,更为出众。不光支持主流的操作系统,还支持一些冷门的(比如古老的DOS),还支持手持设备(俺的智能手机就可以装Python运行环境)。

  ◇和其它语言的整合、交互
  最后这一点,估计大多数同学不会太关心。俺因为要在公司的产品中引入脚本技术,所以俺还得考虑该脚本语言和其它语言的整合能力。整合能力强的脚本语言,可以作为复杂系统中的胶水,用来把不同模块粘合在一起(关于Glue Language,可以参见“这里 ”)。
  在这方面,Python和Ruby的表现都不错。它们和Java的整合有JythonJRuby ;和dotNet平台的整合有IronPythonIronRuby 。至于俺常用的C++,Python整合得比Ruby好。比如C++社区大名鼎鼎的Boost库里面,就有一个Boost.Python的子库(见“这里 ”)。关于Python如何用作胶水,俺会在后续的帖子“作为胶合语言的Python”中会详细介绍。

  基于上述几个方面的考虑,俺最终选择了Python作为俺日常的脚本工具,并把它引入到公司的产品中,作为模块之间的胶合剂。
  啰嗦完Python作为脚本语言的方方面面,下一个帖子 ,咱来聊一下它作为动态语言的那些事儿。


版权声明
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者编程随想 和本文原始地址:

http://program-think.blogspot.com/2009/08/why-choose-python-1-script.html

分享到:
评论

相关推荐

    Python游戏脚本语言(精讲)

    1. 选择 Python:Humongous Entertainment 选择 Python 作为游戏脚本语言,因为 Python 是一种强大、易于嵌入、可与 C/C++ 代码无缝集成的语言。 2. 获益:Humongous Entertainment 使用 Python 获得了许多益处,如...

    《Python编程:从入门到实践》源代码文件

    11. **自动化脚本**:编写用于日常任务自动化的小型Python脚本,例如文件管理、系统监控等。 12. **网络编程**:可能包含使用socket模块进行基本的网络通信,如创建服务器和客户端程序。 13. **项目实践**:书中...

    python项目练习python自动化脚本:12306-火车票购票

    python项目练习python自动化脚本:12306-火车票购票python项目练习python自动化脚本:12306-火车票购票python项目练习python自动化脚本:12306-火车票购票python项目练习python自动化脚本:12306-火车票购票python...

    文卷调查python语言脚本

    文卷调查python语言脚本文卷调查python语言脚本文卷调查python语言脚本文卷调查python语言脚本文卷调查python语言脚本文卷调查python语言脚本文卷调查python语言脚本文卷调查python语言脚本文卷调查python语言脚本文...

    python(中文)脚本语言

    Python(中文)脚本语言是一种广泛使用的高级编程语言,以其简洁、易读的语法和强大的功能而备受青睐。这本书很可能是深入浅出地介绍了Python语言的基础和进阶知识,为初学者提供了很好的学习资源。 Python的基本...

    python游戏项目脚本大全.zip

    python游戏项目脚本大全 python游戏项目脚本大全 python游戏项目脚本大全 python游戏项目脚本大全 python游戏项目脚本大全 python游戏项目脚本大全 python游戏项目脚本大全 python游戏项目脚本大全 python游戏项目...

    Python+App代码脚本基础全套Python+App代码脚本基础全套Python+App代码脚本基础全套Python+App

    Python+App代码脚本基础全套Python+App代码脚本基础全套Python+App代码脚本基础全套Python+App代码脚本基础全套Python+App代码脚本基础全套Python+App代码脚本基础全套Python+App代码脚本基础全套Python+App代码脚本...

    C++调用PYthon脚本(例程)

    本资源“C++调用Python脚本(例程)”提供了一个完整的工程实例,演示了如何在C++程序中动态地调用Python脚本,使得C++能够利用Python的灵活性和便利性。 在C++中调用Python脚本主要有两种方法:一种是通过Python的...

    京东抢茅台Python脚本

    【京东抢茅台Python脚本】是一个利用Python编程语言编写的自动化工具,主要用于在京东平台上自动参与茅台酒的抢购活动。这个脚本的目的是通过自动化的方式提高抢购成功率,节省用户手动操作的时间,并且根据描述,它...

    基于python的王者荣耀脚本

    在当今的数字化时代,游戏编程已经成为了一项热门技能,而Python作为一款易学且功能强大的编程语言,被广泛应用于各种领域,包括游戏自动化。本文将深入探讨如何利用Python编写王者荣耀的脚本,帮助玩家进行自动冒险...

    Python脚本:动态编程的瑞士军刀

    Python脚本是一种使用Python编程语言编写的脚本程序,它是一种动态、解释型的高级脚本语言。...随着Python语言的不断发展,Python脚本的应用范围也在不断扩大,学习Python脚本无疑将为你的编程工具箱增添一把瑞士军刀。

    python脚本:医学文件 dcm图像的读取,并且保存为png格式

    python脚本:医学文件 dcm图像的读取,并且保存为png格式,将目录摆放好即可运行

    Python脚本使用详解.doc

    **Python脚本使用详解** **一、Python语言基础** Python是一种高级编程语言,以其简洁、易读的语法而闻名,适合初学者入门。在Python语言基础部分,我们首先要了解以下几个关键概念: 1. **数学运算符**:Python...

    面向Arcgis的python脚本编程

    7. 部署与分享:最后,了解如何部署Python脚本为ArcGIS工具箱工具,以便在ArcGIS Desktop或Pro中供他人使用,或者将脚本封装成Web服务进行分布式计算,都是提升工作效率的关键步骤。 综上所述,面向ArcGIS的Python...

    c语言调用python脚本

    例如,假设有一个名为"script.py"的Python脚本,其中包含了一些函数或方法。 使用C语言编写代码:在C语言中调用Python脚本需要使用到Python的C API。首先需要包含相关头文件,并初始化Python解释器。然后可以使用...

    python交换机自动备份脚本

    Python交换机自动备份脚本是一种高效管理网络设备的方法,它能帮助网络管理员便捷地备份多个交换机的配置,包括华为、思科、华三和Aruba等不同品牌的设备。这样的脚本大大提高了工作效率,减少了手动操作的繁琐和...

    python跳一跳脚本

    1. **Python编程语言**:Python是一种高级编程语言,以其简洁明了的语法和强大的库支持而闻名。在编写自动化脚本,如微信跳一跳脚本时,Python提供了丰富的库,如`pyautogui`和`pynput`,用于屏幕控制和输入模拟。 ...

    Python-ps1scriptify用于将Python脚本转换为Powershell脚本的工具

    `ps1scriptify`是一个实用的工具,它允许开发者将Python脚本转换为等效的Powershell(`.ps1`)脚本,从而在Powershell环境中运行。 `ps1scriptify`的核心功能在于桥接Python和Powershell之间的差异,使Python代码...

    【课程代码】从零写Python练手项目:实用脚本.zip

    从零写Python练手项目:实用脚本! 适合刚刚入门python小白和新手去做一下项目来锻炼学习一下!

    Python脚本语言编译器

    总的来说,Python脚本语言编译器是学习Python编程的基石,它不仅涉及到语言的编译过程,还包括了Python的语法、数据结构、函数、面向对象编程等核心概念。通过深入研究,初学者不仅可以编写出有效的Python代码,还能...

Global site tag (gtag.js) - Google Analytics