Python的由来python
Python的创始人(Guido Van Rossum)吉多·范罗苏姆——龟叔,1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,作为ABC 语言的一种继承。之因此选中Python(大蟒蛇的意思)做为程序的名字,是由于他是一个叫Monty Python的喜剧团体的爱好者。程序员
ABC是由Guido参加设计的一种教学语言。就Guido本人看来,ABC 这种语言很是优美和强大,是专门为非专业程序员设计的。可是ABC语言并无成功,究其缘由,Guido 认为是非开放形成的。Guido 决心在Python 中避免这一错误。同时,他还想实如今ABC 中闪现过但不曾实现的东西。web
就这样,Python在Guido手中诞生了。实际上,第一个实现是在Mac机上。能够说,Python是从ABC发展起来,主要受到了Modula-3(另外一种至关优美且强大的语言,为小型团体所设计的)的影响。而且结合了Unix shell和C的习惯。算法
Python的种类shell
Python也分类,有Cpython、Jython、Ironpython、PyPy、Rubypython...数据库
大体分为三类:Cpython、PyPy、其余Python(Jython、Ironpython、Rubypython...)。编程
不论是哪一种Python,实现过程都是先转换成字节码,而后在相应的虚拟机上运行。PyPy有点特殊,是直接将Python代码转换成机器码。而Cpython和其余Python是先转换成字节码再转换成机器码。flask
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更规范统1、去掉了不必的关键字。Python3.x还在持续改进。
因此咱们仍是推荐你们使用Python3.x。