一.Python介绍
Python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。
最新的TIOBE排行榜,Python已经占据世界第三名的位置, Python崇尚优美、简单、清晰,是一个优秀并广泛使用的语言。
由上图可见,Python整体呈上升趋势,反映出Python应用越来越广泛并且也逐渐得到业内的认可!!!
Python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。
目前Python主要应用领域:
- WEB开发——最火的Python web框架Django是全球第5大web框架, 支持异步高并发的Tornado框架,短小精悍的flask,bottle, Django官方的标语把Django定义为the framework for perfectionist with deadlines(大意是一个为完全主义者开发的高效率web框架),越来越多的人用Python写web程序,而不是php
- 网络编程——支持高并发的Twisted网络框架, py3引入的asyncio使其异步高并发编程能力更加强悍
- 爬虫——爬虫领域,Python几乎是霸主地位,全球大部分的爬虫都是用python程序写的,Scrapy\Request\BeautifuSoap\urllib等爬虫库,使你想爬啥就爬啥
- 云计算——知名的云计算框架OpenStack基于Python开发
- 人工智能、数据分析—— Python 是目前公认的人工智能和数据分析领域的必备语言,大量机器学习框架如PyTouch,OpenCV,sklearn等都是用Python开发的
- 自动化运维——问问中国的每个运维人员,运维人员必须会的语言是什么?10个人相信会给你一个相同的答案,就是Python
- 金融分析——我个人之前在金融行业,早在2010年的时候,我们公司写的好多分析程序、高频交易软件就是用的Python,到目前,Python是金融分析、量化交易领域里用的最多的语言
- 科学运算—— 97年开始,NASA就在大量使用Python在进行各种复杂的科学运算,随着NumPy, SciPy, Matplotlib, Enthought librarys等众多程序库的开发,使的Python越来越适合于做科学计算、绘制高质量的2D和3D图像。
- 游戏开发——在网络游戏开发中Python也有很多应用。相比Lua or C++,Python 比 Lua 有更高阶的抽象能力,可以用更少的代码描述游戏业务逻辑,与 Lua 相比,Python 更适合作为一种 Host 语言,即程序的入口点是在 Python 那一端会比较好,然后用 C/C++ 在非常必要的时候写一些扩展。Python 非常适合编写 1 万行以上的项目,而且能够很好地把网游项目的规模控制在 10 万行代码以内。另外据我所知,知名的游戏 就是用Python写的
- 少儿编程——最近两年火起来的少儿编程,均把Python当做一门重要课程
1.1.编程语言的分类
编程语言主要分为编译型和解释型编程语言
编译型和解释型的区别是什么?
编译型语言会通过编译器把程序代码编译(翻译)成机器所能识别的二进制代码. 其特点呢, 就是一次性把源代码翻译成一个二进制文件. 拿着二进制文件去找操作系统去执行. 由于执行的是计算机熟悉的二级制代码, 执行效率就会高很多. 相对应的还有一种是解释型语言. 这类语言一般脱离了操作系统的束缚. 直接把代码执行在解释器上. 由解释器负责逐行的解释代码. 把每行代码翻译成机器识别的二进制指令. 再由操作系统去执行. 这样做的好处呢. 代码直接面对的是解释器. 就摆脱了不同操作系统底层的差异. 实现跨平台效果.
编译型vs解释型
编译型
优点:执行效率高
缺点:不同平台移植起来会有些麻烦
解释型
优点:一般都会有很好的跨平台性
缺点:性能相对编译型要差一点
1.2.Python的优缺点和Python解释器
首先, Python是一门解释型编程语言. Python的代码是执行在Python解释器上的.
当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件。要运行代码,就需要Python解释器去执行.py文件。
由于整个Python语言从规范到解释器都是开源的,所以理论上,只要水平够高,任何人都可以编写Python解释器来执行Python代码(当然难度很大)。事实上,确实存在多种Python解释器。
CPython
当我们从Python官方网站下载并安装好Python后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。
CPython是使用最广的Python解释器。我们所有代码也都在CPython下执行。
IPython
IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。
PyPy
PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。
绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。
Jython
Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。
IronPython
IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。
先看优点
- Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂的程序。
- 开发效率非常高,Python有非常强大的第三方库,基本上你想通过计算机实现任何功能,Python官方库里都有相应的模块进行支持,直接下载调用后,在基础库的基础上再进行开发,大大降低开发周期,避免重复造轮子。
- 高级语言————当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节
- 可移植性————由于它的开源本质,Pytho