关于Python
Python 是一种极少数能声言兼具 简单 与 功能强大 的编程语言。你将惊异于发现你正在使用的这门编程语言是如此简单,它专注于如何解决问题,而非拘泥于语法与结构。
官方对 Python 的介绍如下:
Python 是一款易于学习且功能强大的编程语言。 它具有高效率的数据结构,能够简单又有效地实现面向对象编程。Python 简洁的语法与动态输入之特性,加之其解释性语言的本质,使得它成为一种在多种领域与绝大多数平台都能进行脚本编写与应用快速开发工作的理想语言。
我将会在下一节详细讨论这些特性。
★ 名字背后的故事
Python 的创造者吉多·范罗苏姆(Guido van Rossum)采用 BBC 电视节目《蒙提·派森的飞行马戏团(Monty Python’s Flying Circus,一译巨蟒剧团)》的名字来为这门编程语言命名。尽管他本人并不特别喜欢蟒蛇这种通过在猎物身边卷曲自己的身体以此来碾碎猎物身体来进食的动物。
★ Python 的特色
▶ 简单
Python 是一门简单且简约的语言。阅读一份优秀的 Python 程序代码就如同在阅读英语文章一样,尽管这门英语要求十分严格!Python 这种伪代码式的特质正是它的一大优势。它能够让你专注于解决问题的方案,而不是语言本身。
▶ 易于学习
正如你接下来将看到的,Python 是一门非常容易入门的语言。正如前面所提到的,Python 有一套极其简单的语法体系。
▶ 自由且开放
Python 是 FLOSS (自由/开放源代码软件)的成员之一。简单来说,你可以自由地分发这一软件的拷贝,阅读它的源代码,并对其作出改动,或是将其的一部分运用于一款新的自由程序中。FLOSS 基于一个可以分享知识的社区理念而创建。这正是 Python 为何能如此优秀的一大原因——它由一群希望看到 Python 能变得更好的社区成员所创造,并持续改进至今。
▶ 高级语言
当你在用 Python 编写程序时,你不必考虑诸如你的程序应当如何使用内存等底层细节。
▶ 跨平台性
由于其开放源码的特性,Python 已被移植到其它诸多平台(意即它们已经过改动以保证其能正常工作)。如果你小心地避开了所有系统依赖型的特性。你所有的 Python 程序可以在其中任何一个平台上工作,不必作出任何改动。
你可以在 GNU/Linux、Windows、FreeBSD、Macintosh、 Solaris、 OS/2、 Amiga、 AROS、 AS/400、 BeOS、 OS/390、 z/OS、 Palm OS、 QNX、 VMS、 Psion、 Acorn RISC OS、 VxWorks、 PlayStation、 Sharp Zaurus、 Windows CE 以及 PocketPC 平台上运行 Python!
你甚至可以通过诸如 Kivy 一类的平台来制作可在你的电脑 以及 iPhone、iPad 或安卓手机上运行的游戏。
▶ 解释性
有关这一特性,需要一些详细的解释。
在你使用诸如 C 或 C++ 等编译语言编写程序时,需要将这些语言的源代码通过编译程序配合其中不同的标记(Flags)与选项,来将它们转换成你的电脑所使用的语言(例如 0 与 1 构成的二进制码)。当你运行这些程序时,链接程序或载入程序将会从硬盘中将程序拷贝至内存中并将其运行。
另一方面,Python 不需要将其编译成二进制码。你只需要直接从源代码 运行 该程序。在程序内部,Python 会将源代码转换为称为字节码的中间形式,尔后再转换成你的电脑所使用的语言,并运行它。实际上,这一流程使得 Python 更加易于使用,你不必再担心该如何编译程序,或如何保证适当的库被正确的链接并加载等等步骤。这也同样使得 Python 程序更便携且易于迁移,你只需要将 Python 程序拷贝到另一台电脑便可让它立即开始工作!
▶ 面向对象
Python 同时支持面向过程编程与面向对象编程。在 面向过程 的编程语言中,程序是由仅仅带有可重用特性的子程序与函数所构建起来的。在 面向对象 的编程语言中,程序是由结合了数据与功能的对象所构建起来的。与 C++ 或 Java 这些大型语言相比,Python 具有其特别的、功能强大又简单的方式来实现面向对象编程。
▶ 可扩展性
如果你需要代码的某一重要部分能够快速地运行,或希望算法的某些部分不被公开,你可以在 C 或 C++ 语言中编写这些程序,然后再将其运用于你的 Python 程序中。
▶ 可嵌入性
你可以在你的 C 或 C++ 程序中嵌入 Python,从而向你的程序用户提供 脚本 功能。
▶ 丰富的库
实际上 Python 标准库的规模非常庞大。它能够帮助你完成诸多事情,包括正则表达式、文档生成、单元测试、多线程、数据库、网页浏览器、CGI、FTP、邮件、XML、XML-RPC、HTML、WAV 文件、密码系统、GUI(图形用户界面),以及其它系统依赖型的活动。只需记住,只要安装了 Python,这些功能便随时可用。它们的存在被称作 Python 自备电池(Batteries Included) 式的哲学。
除了标准库以外,你还可以在 Python 库索引(Python Package Index) 中发掘许多其它高质量的库。
▶ 总结
Python 着实是一门令人心生激动且强大的语言。它得当地结合了性能与功能,使得编写 Python 程序是如此简易又充满乐趣。
▶ Python 3 VS Python 2
如果你对“Python 2”与“Python 3”之间的区别不感兴趣你可以略过本段。但务必注意你正在使用的版本。本书是以 Python 3 为对象撰写的。
只消记住一旦你正确理解并学习了其中一个版本的 Python,你便可以很容易地理解另一版本的区别,并能快速学习如何使用。困难的是学习如何编程以及理解 Python 语言本身的基础部分。这便是我们在本书中的目标,而一旦你达成了目标,你便可以根据你的实际情况,决定是该使用 Python 2 还是 Python 3。
要想了解有关 Python 2 和 Python 3 之间的区别的更多细节,你可以参阅:
>The future of Python 2
>Porting Python 2 Code to Python 3
>Writing code that runs under both Python2 and 3
>Supporting Python 3: An in-depth guide
▶ 程序员怎么说
或许你在阅读诸如 ESR 等伟大的黑客是如何讨论 Python 时会有些有趣的发现:
>埃里克·雷蒙(Eric S. Raymond) 是《大教堂和市集(The Cathedral and the Bazaar)》的作者,同时也是 开放源代码促进会 的创始人之一。他曾说Python 已成为他所喜爱的一门编程语言。这篇文章给了我接触 Python 的最先鼓舞。
>布鲁斯·埃克尔(Bruce Eckel) 是《Java 编程思想(Thinking in Java)》与《C++ 编程思想(Thinking in C++)》的作者。他说没有一种编程语言能像 Python 这样使他更加高产。他说或许 Python 是唯一一门面向程序员且致力于使事情变得更加容易的语言。阅读 完整采访 以了解更多细节。
>彼得·诺米格(Peter Norvig) 是广为人知的 Lisp 作者,同时也是 Google 公司的搜索质量总监(Director of Search Quality,感谢吉多·范罗苏姆指出这一点)。他说写 Python 时就好像在写伪代码。他还说 Python 一直是构成 Google 整体的重要部分。你可以通过浏览 Google Jobs 页面并发现“Python 知识”是软件工程师所须具备的一项要求来验证这一说法。
▶ Python的现在
应该说Python现在表现不错。除了在Web开发方面有很多应用之外(当然PHP在这方面也是很不错),在数据分析、机器学习、大数据、云计算等这些时髦的领域,都有它的身影,并且影响力越来越大了。此外,还有自动化运维、自动化测试。
读者可以到这个网站看一看Python的应用案例:https://www.python.org/about/success
不过,因为赵国大学教育的问题,致使很多青年才俊对Python了解甚少;更因为赵国的功利化优良传统,青年才俊们最大担心的是学了Python——这种学校老师很少甚至从没有提及的怪东西——没有什么用途,因为才俊们已经通过铺天盖地的广告了解到android、iOS开发,于是就认为“软件开发==Android or iOS”,其它都过时了——最希望才俊能够跳出四角天空,用自己的头脑思考、用自己的眼睛看世界,形成独立的判断,不要听信广告——也包括我这里的各种对Python的溢美之词。
▶ Python的未来
这个不需要描述,它的未来在所有使用者和学习者手中。
▶ 跟别的语言比较
“如果你遇到的问题无法用Python解决,这个问题也不能用别的语言解决。”——这是我向一些徘徊在Python之外的人常说的,是不是有点夸张了呢?
最近看到了一篇文章,《如果编程语言是女人》,我转载如下(考虑到篇幅所限,所了适当删改,要阅读非删减版,请通过连接查看原文):
PHP是你的豆蔻年华的心上人,她是情窦初开的你今年夏天傻乎乎的追求的目标。玩一玩可以,但千万不要投入过深,因为这个女孩有严重的问题。
Ruby是脚本家族中一个非常漂亮的孩子。第一眼看她,你的心魄就会被她的美丽摄走。她还很有有趣。起初她看起来有点慢,不怎么稳定,但近些年来她已经成熟了很多。
Python 是Ruby的一个更懂事的姐姐。她优雅,新潮,成熟。她也许太过优秀。很多小伙都会说“嘿,兄弟,你怎么可能不爱上Python呢!?”。没错,你喜欢Python。你把她当成了一个脾气和浪漫都退烧了的Ruby。
Java是一个事业成功的女人。很多在她手下干过的人都感觉她的能力跟她的地位并不般配,她更多的是通过技巧打动了中层管理人员。你也许会认为她是很有智慧的人,你愿意跟随她。但你要准备好在数年里不断的听到“你用错了接口,你遗漏了一个分号”这样的责备。
C++ 是Java的表姐。她在很多地方跟Java类似,不同的是她成长于一个天真的年代,不认为需要使用“保护措施”。当然,“保护措施”是指自动内存管理。你以为我指的是什么?
C 是C++的妈妈。对一些头发花白的老程序员说起这个名称,会让他们眼睛一亮,产生无限回忆。
Objective C C语言家族的另外一个成员。她加入了一个奇怪的教会,不愿意和任何教会之外的人约会。
虽然是娱乐,或许有争议,权当参考吧。
所以,Python值得拥有。
在正式开始学习之前,首先要告诉你成为Python高手的秘诀。