Python概要介绍

Python的由来

    Python的创始人(Guido Van Rossum)吉多·范罗苏姆——龟叔,1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为ABC 语言的一种继承。之所以选中Python(大蟒蛇的意思)作为程序的名字,是因为他是一个叫Monty Python的喜剧团体的爱好者。

    ABC是由Guido参加设计的一种教学语言。就Guido本人看来,ABC 这种语言非常优美和强大,是专门为非专业程序员设计的。但是ABC语言并没有成功,究其原因,Guido 认为是非开放造成的。Guido 决心在Python 中避免这一错误。同时,他还想实现在ABC 中闪现过但未曾实现的东西。

    就这样,Python在Guido手中诞生了。实际上,第一个实现是在Mac机上。可以说,Python是从ABC发展起来,主要受到了Modula-3(另一种相当优美且强大的语言,为小型团体所设计的)的影响。并且结合了Unix shell和C的习惯。

Python的种类

    Python也分类,有Cpython、Jython、Ironpython、PyPy、Rubypython...

    大致分为三类:Cpython、PyPy、其他Python(Jython、Ironpython、Rubypython...)。

    不管是哪种Python,实现过程都是先转换成字节码,然后在相应的虚拟机上运行。PyPy有点特殊,是直接将Python代码转换成机器码。而Cpython和其他Python是先转换成字节码再转换成机器码。

Python的应用领域

    使用Python的技术范畴:

    数据分析: 2016/2月/11,美国科学家宣布发现引力波,分析观测30年的数据。分析引力波数据的Python包:GWPY
    云计算 : 典型应用——Python开发的OpenStack
    WEB开发: 众多优秀的WEB框架,Django、flask、 tornado
    科学运算、人工智能: 典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas。
    系统运维: 运维人员必备,slatstack(系统自动化配置和管理工具),Ansible(自动化运维工具)
    图形开发: wxPython、PyQT、TKinter

    使用Python的企业:

    Google - Google Groups、Gmail、Google Maps、AlphaGo等,Google App Engine支持python作为开发语言
    NASA - 美国宇航局,从1994年起把python作为主要开发语言
    Dropbox - 美国最大的在线云存储网站,全部用Python实现,每天网站处理10亿个文件的上传和下载
    豆瓣网 - 图书、唱片、电影等文化产品的资料数据库网站
    BitTorrent - bt下载软件客户端
    gedit - Linux平台的文本编辑器
    GIMP - Linux平台的图像处理软件(Linux下的PS)
    知乎(国外的Quora) - 社交问答网站,国内最大的问答社区,通过Python开发
    Autodesk Maya - 3D建模软件,支持python作为脚本语言
    YouTube:世界上最大的视频网站YouTube就是用Python开发的
    Facebook:大量的基础库均通过Python实现的
    Redhat: 世界上最流行的Linux发行版本中的yum包管理工具就是用python开发的

    除上面之外,还有搜狐、金山、腾讯、盛大、网易、百度、阿里、淘宝 、土豆、新浪、果壳等公司都在使用Python完成各种各样的任务。
    更多案例:https://www.python.org/about/success/

风格介绍

     Python在设计上坚持了清晰划一的风格,这使得Python成为一门易读、易维护,并且被大量用户所欢迎的、用途广泛的语言。

     设计者开发时总的指导思想是,对于一个特定的问题,只要有一种最好的方法来解决就好了。这在由Tim Peters写的python格言(称为The Zen of Python)里面表述为:There should be one-- and preferably only one --obvious way to do it. 这正好和Perl语言(另一种功能类似的高级动态语言)的中心思想TMTOWTDI(There's More Than One Way To Do It)完全相反。

     Python的作者有意的设计限制性很强的语法,使得不好的编程习惯(例如if语句的下一行不向右缩进)都不能通过编译。其中很重要的一项就是Python的缩进规则。

    一个和其他大多数语言(如C)的区别就是,一个模块的界限,完全是由每行的首字符在这一行的位置来决定的(而C语言是用一对花括号{}来明确的定出模块的边界的,与字符的位置毫无关系)。这一点曾经引起过争议。因为自从C这类的语言诞生后,语言的语法含义与字符的排列方式分离开来,曾经被认为是一种程序语言的进步。不过不可否认的是,通过强制程序员们缩进(包括if,for和函数定义等所有需要使用模块的地方),Python确实使得程序更加清晰和美观。

Python的优点

     Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂,
初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂的程序。

    开发效率非常高,Python有非常强大的第三方库,基本上你想通过计算机实现任何功能,Python官方库里都有
相应的模块进行支持,直接下载调用后,在基础库的基础上再进行开发,大大降低开发周期,避免重复造轮子。

    高级语言,当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节

    可移植性,由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就几乎可以在市场上所有的系统平台上运行

    可扩展性,如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。

    可嵌入性,你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。

Python的缺点

    代码不能加密,因为PYTHON是解释性语言,它的源码都是以明文形式存放的,不过我不认为这算是一个缺点,如果你的项目要求源代码必须是加密的,那你一开始就不应该用Python来去实现。

    多线程支持不好。

    Python慢,Python相对C语言确实慢很多,但其实这里所指的速度慢在大多数时候我们是无法感知的,比如说,是用C语言程序开发了一个程序,执行需要花0.01秒,使用Python实现同样功能的程序,需要花0.1秒的时间,虽然相差10倍,但是我们基本是感知不到的。更多的时候,程序慢是程序员实现功能方式导致的。就好像开罐头的时候,有的人用牙咬,有的人用工具,这样两个人的效率相比起来就差了很多。

Python的解释器

     Cpython
     Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。

     Jyhton
     Python的Java实现,Jython会将Python代码动态编译成Java字节码,然后在JVM上运行。

     IronPython
     Python的C#实现,IronPython将Python代码编译成C#字节码,然后在CLR上运行。(与Jython类似)

     PyPy(特殊)
     Python实现的Python,将Python的字节码字节码再编译成机器码。

     RubyPython、Brython ...

     Python的解释器很多,但使用最广泛的还是CPython。如果要和Java或.Net平台交互,最好的办法不是用Jython或IronPython,而是通过网络调用来交互,确保各程序之间的独立性。

Python的发展历程

    1989年,为了打发圣诞节假期,Guido开始写Python语言的编译器。Python这个名字,来自Guido所挚爱的电视剧Monty Python’s Flying Circus。他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,易学易用,可拓展的语言。

    1991年,第一个Python编译器诞生。它是用C语言实现的,并能够调用C语言的库文件。从一出生,Python已经具有了:类,函数,异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统。

    Python 1.0 - January 1994 增加了 lambda, map, filter and reduce.
    1999年 Python的web框架之祖——Zope 1发布
    Python 2.0 - 2000/10/16,加入了内存回收机制,构成了现在Python语言框架的基础
    Python 2.4 – 2004/11/30, 同年目前最流行的WEB框架Django 诞生
    Python 2.5 - 2006/09/19
    Python 2.6 - 2008/10/1
    Python 2.7 - 2010/07/03

    Python 3.0 - 2008/12/03 

    Python 3.1 - 2009/06/27
    Python 3.2 - 2011/02/20
    Python 3.3 - 2012/09/29
    Python 3.4 - 2014/03/16
    Python 3.5 - 2015/09/13

    2014年11月,Python2.7将在2020年停止支持的消息被发布,并且不会在发布2.8版本,建议用户尽可能的迁移到3.4+。

    Python最初发布时,在设计上有一些缺陷,比如Unicode标准晚于Python出现,所以一直以来对Unicode的支持并不完全,而ASCII编码支持的字符有限。例: 对中文支持不好。     

    Python3相对Python早期的版本是一个较大的升级,Py3在设计的时候没有考虑向下兼容,所以很多早期版本的Python的程序无法再Py3上运行。为了照顾早期的版本,推出过渡版本2.6——基本使用了Python 2.x的语法和库,同时考虑了向Python 3.0的迁移,允许使用部分Python 3.0的语法与函数。     

    2010年继续推出了兼容版本2.7,大量Python3的特性被反向迁移到了Python2.7。

    2.7比2.6进步非常多,同时拥有大量3中的特性和库,并且照顾了原有的Python开发人群。

    Python2 还是 Python3 ?

    py2.7是2.x系列的最后一个版本,已经停止开发,不再增加新功能。2020年终止支持。

    所有的最新的标准库的更新改进,只会在3.x的版本里出现。

    龟叔决定清理Python2.x ,并且不再兼容旧版本。 最大的一个改变就是使用Unicode作为默认编码。Pyhton2.x中直接写中文会报错,Python3中可以直接写中文了。

从开源项目看,支持py3的比例已经大大提高,知名的项目一般都支持py2.7和py3+。py3比py2更规范统一、去掉了没必要的关键字。Python3.x还在持续改进。

    所以我们还是推荐大家使用Python3.x。

 

 

posted @ 2016-08-21 12:11  小李超人  阅读(689)  评论(0编辑  收藏  举报