Python 能干什么(一)


当你看到 Python 的时候, 心里想

“蛇 ?!”,请从0节开始;
“这是测试的事”,请跳转第2节;
“脚本语言”,请跳转到3节;
“不适用于大工程”,请跳转4节;


O、 巨蟒剧团之飞行马戏团

巨蟒剧团(Monty Python),1969年10月5日,当这五个英国佬和一个美国佬第一次胡言乱语恬不知耻地出现在BBC电视台上时,整个英伦三岛都傻了眼。从这天开始,在之后短短的四年间, “巨蟒剧团” 及其六位成员的名字通过《飞翔的马戏团》这套空前成功的电视喜剧节目,很快成为了英国现代文化的一个标志。这个名字,在今天不仅仅指向他们合作的四季电视剧和四部故事片,也不只代言喜剧的后现代面孔,而俨然已经被推崇为后现代的文化符号,有喜剧界的披头士之称。CNN的追忆文章曾感慨“巨蟒改变了世界”。


一、正文

作为一部英国肥皂剧的脑残粉,荷兰数学家 Guido van Rossum 将他设计的一种程序设计语言,命名为 Python,它最初发布的时间是1991年。是的,今年 Python 已经24岁了,比 HTTP 1.0协议大5岁,且比 Java 大4岁. 它已经步入创业的最佳年龄了!

1996年 Google 的第一个成功的网络爬虫就是使用 Python 实现的。有趣的是,此时 Rossum 已经移居美国1年了,而他就职 Google 还要再等 9 年以后的2005年。


二、Python 只适合测试?

关于Python是一种什么样的语言,这里不打算说对象、类之类的术语。我们可以先来看一看,时至今日 Python 都在哪些领域里得以应用:

电信基础设施 (Twilio) 支付系统 (PayPal, Balanced Payments) 神经科学和心理学 数值分析和工程 (numpy, numba) 动画(LucasArts, Disney, Dreamworks) 游戏后台 (Eve Online, Second Life…) Email 基础设施 (Mailman, Mailgun) 媒体存储和处理 (YouTube, Dropbox) 操作和系统管理 (Rackspace, OpenStack) 自然语言处理(NLTK) 机器学习和计算机版本 (scikit-learn, Orange) 安全性和渗透性测试 ( eBay/PayPal ) 大数据 (Disco, Hadoop support) 搜索系统 (ITA, Ultraseek, 还有 Google) Internet 基础设施 (DNS) (BIND 10)

在如此之多领域的公司里得到广泛使用的Python,难道只是用在它们的测试部门?至少根据网络上的谣言,豆瓣、Youbute、和 Dropbox 都是以 Python 为主体语言搭建起来的网站。Python 强大的能力(例如:网络处理能力,还有各种扩展包),可以使得程序员们把注意力投放在实现业务上,而不是内存管理,接口设计之类的细节上。

事实上,Python 最常见的应用情形是:

1.使用 Python 快速生成程序的原型(有时甚至是程序的最终界面,你会喜欢 wxPython 的),
2.对其中有特别要求的部分,使用更合适的语言(尤其是 C/C++)改写。

由于 Python 与 C 的天然联系,它们之间的相互调用从来都不是问题。特别是 Python 如何调用 C 在《 Programming Python》的 Chapter 22. Extending Python 部分有介绍。Python 调用 C 的动态/静态库并不是一件复杂的事情。实际上, Python 原生的正则表达式库就是用 C 语言实现的。


三、Python 只是脚本语言?

Python 确实的可以完成脚本语言的功能(使用更简洁的方式)。Shell 工具往往从命令行运行,实现诸如文本文件的处理以及调用其他程序等任务。Python 能做的更多。

有专家称 Python 是大数据全栈式开发语言,在“云基础设施”、“DevOps”、”网络爬虫” 和 “数据处理”领域,Python 都是最流行的语言。

对于开源软件向来迟钝的微软参加2015年 PyCon 时高调宣布提高 Python 在 Windows 上的编程体验,包括 Visual Studio 支持 Python,优化 Python 的 C 扩展在 Windows 上的编译等等。脑补下未来 Python 作为 Windows 默认组件的场景。


四、Python 之NB

和 Python 之禅(注1)里表述的一样,简单优雅已经深入Python骨髓。正是这个原因,Python 才被认为上手简单,开发快速,程序可读性超强;也正是这些特点,互联网公司更有意愿使用它,因为快速发布是它们的生存之根本。在实践中,程序员可以很直观地发现,用 Python 写的代码通常要比同样的 C/C++ 或 JAVA 程序要短得多。

Python

#!/usr/bin/python

a = 0
while(a <= 10):
    a = a + 1
    print 'The number is '+a
print 'while is end'

C++

#include 

int main()
{
    int a = 0;
    while( a <= 10)
    {
        a = a + 1;
        cout<<"The number is "<

能做到这些,是因为Python

4.1 变量不需要声明

这个真的很方便。变量的声明和定义一定会严重打断对代码逻辑的思考,还有对齐的麻烦。内存的管理,这简直都就是 C/C++ 编程中最常见的雷区,由于省略了声明,这也不再是问题了。

4.2 缩进而不是 { }

Python 是以缩进来管理代码结构的。这样做有他的优越性:程序员们一定有过漏写 ‘{’ 或者 ‘}’ 的经历。如果使用的编译器或者解释器优秀的话,漏去的’{’ ‘}’的确可以非常容易的加上。但如果不是这样,请在复杂的代码中漫游一会吧。因为可能编译器会通知一个 ‘错误’ 的错误信息,这个错误的位置可能会离你真正错误的地方很远(十万八千里?!)。相对于此,以缩进管理方式的 Python 来说,程序员几乎不用考虑这种问题。其次以缩进方式区分块的Python在进行复杂的嵌套中,Python代码就显得明了许多了。
Python

class python:
    def Hello(self):
        print 'Hello'
    def count(self, n):
        in = 0
        while( in <= n):
            in = in + 1
            print in

C++

class python
{
public:
    void Hello(void)
    {
        cout<<"Hello"<

相比较来看,Python的代码更能分清其层次,而对于C++这样的代码虽然能够编译成功。但是,对于其日后的维护,会造成无尽的痛苦。由此,可以看出 Python的语法简洁。同时,Python 的查错能力也非常强。在一般情况下,Python的解释器能够准确指出错误的位置和原因。

Python 的缩颈唯一没有做好的就是没有指定一定要缩进4个空格。


注1: 了解完整的Python 哲学理念,可以在任意一个Python 交互解释器中键入import this 命令

注2:GIL,即全局解释器锁(Global Interpreter Lock)。

评论关闭