1 Python定义
Python 是一种简单易学并且结合了解释性、编译性、互动性和面向对象的脚本语言。Python提供了高级数据结构,它的语法和动态类型以及解释性使它成为广大开发者的首选编程语言。
Python 是解释型语言: 开发过程中没有了编译这个环节。类似于PHP和Perl语言。
Python 是交互式语言: 可以在一个 Python 提示符 >>> 后直接执行代码。
Python 是面向对象语言: Python支持面向对象的风格或代码封装在对象的编程技术。
2 Python发展史
2.1 Python的发展
Python的创始人为Guido van Rossum。1989年,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为ABC 语言的一种继承。
Python 是由其他语言发展而来的,其中主要包括 ABC、Modula-3、C、C++、SmallTalk、Unix shell 等。
自从2004年以后,python的使用率呈线性增长。
Python 2于2000年10月16日发布,稳定版本是Python 2.7。Python 3于2008年12月3日发布,不完全兼容Python 2。2011年1月,它被TIOBE编程语言排行榜评为2010年度语言。
2.2 Python的版本更新
目前python发布的版本过程主要包括如下:
发布版本 | 年份 | GPL 兼容 |
0.9.0 至 1.2 | 1991-1995 | 是 |
1.3 至 1.5.2 | 1995-1999 | 是 |
1.6 | 2000 | 否 |
2.0 | 2000 | 否 |
1.6.1 | 2001 | 否 |
2.1 | 2001 | 否 |
2.0.1 | 2001 | 是 |
2.1.1 | 2001 | 是 |
2.1.2 | 2002 | 是 |
2.1.3 | 2002 | 是 |
2.2 及更高 | 2001至今 | 是 |
... | ... | ... |
3.10.4 | March 24, 2022 | 是 |
目前python 的最新版本已经达到3.10.4,因此可见版本更新之快。
2.1 Python2.0与Python3.0的区别
输出方面Python2.0 使用print关键字进行输出,比如:print “Hello”;
Python3.0 使用print()函数,比如:print("Hello")。
输入方面Python2.0 使用raw_input()函数,比如:name=raw_input("请输入你的名字:");
Python3.0 使用input()函数,比如:name=input("请输入你的名字:")。
字符串的编码格式Python2.0 默认采用ASCII编码对输入的字符串进行编码;
Python3.0 默认采用Unicode编码对字符串进行编码。
格式化字符串的方式Python2.0 用%占位符进行标准化格式输出字符串,比如:“Hello,%s" % ("World");
Python3.0 用format()函数,比如:”Hello,{}“.format("World")。
源文件的编码格式Python2.0 默认采用ASCII,因此使用中文时要在源文件开头加上一行注释:# -- coding: utf-8 --;
Python3.0 默认采用utf-8。
数据类型python2.0 有整型int、长整型long
python3.0 只有整型int
代码规范python 2.0 源码不规范,重复代码很多
python 3.0 源码精简,美观、优雅
3 Python编译和运行过程
虽然Python源代码文件(.py)可以直接使用Python命令运行,但实际上Python并不是直接解释Python源代码,它是具有一个编译和运行的过程,具体过程如下图:
首先将Python源代码(.py文件)编译生成Python字节码(Python Byte Code,字节码文件的扩展名一般是.pyc),然后再由Python虚拟机(Python Virtual Machine,简称PVM)来执行Python字节码,最后在终端输出运行结果。
通过以上编译和运行过程可分析:Python是一种解释型语言,指的是解释Python字节码,而不是Python源代码。这种机制的基本思想与Java和.NET是一致的。
3.1 Python解释器
Python解释器(Interpreter)是把Python语言翻译成计算机 CPU 能听懂的机器指令。
首先可以在命令提示行输入python --version来查看python的版本:
$ python --versionPython 3.7.4
然后在命令提示符中输入"Python"命令来启动Python解释器:
$ python
执行以上命令后,出现如下信息:
$ pythonPython 3.7.4 (tags/v3.7.4:e09359112e, Jul 8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32Type "help", "copyright", "credits" or "license" for more information.>>>
Python解释器易于扩展,可以通过调用C语言或C++来扩展新功能和数据类型。
3.2 Python解释器种类
Cpython:用C语言开发的,在命令行下运行Python就是启动Cpython解释器,官方下载的python2.7均为Cpython。Cpython用>>>作为提示符。Ipython:基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。IPython用In [序号]:作为提示符。PyPy:主要针对执行速度。采用JIT技术,对Python代码进行动态编译。绝大部分Python代码都可以在PyPy下运行。Jpython:运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。IronPython:运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。Boost.Python:使得Python和C++的类库可互相调用(.pyc)。3.3 Python虚拟机
python并不将py文件编译为机器码来运行,而是由python虚拟机一条条地将py语句解释运行,python虚拟机的执行方式就是模仿普通x86可执行文件运行方式。
虚拟机输入为字节码.pyc文件,由字节码文件加载器将二进制的.pyc文件加载到内存,由执行引擎解释执行,输出为字节码文件的执行结果。
3.4 Python字节码(.pyc)
Python中的字节码(bytecode) 是一种数据类型, Python代码的编译结果就是bytecode对象。bytecode对象可以由虚拟机加载后直接运行,而pyc文件就是bytecode在硬盘上的保存形式。
假如有个test.py文件需要执行,那么它会先生成.pyc文件,一般可能的情况如下:
执行 python test.py 会对test.py进行编译成字节码并解释执行,但不会生成test.pyc。如果test.py中加载了其他模块,如import urllib2,那么python会对urllib2.py进行编译成字节码,生成urllib2.pyc,然后对字节码解释执行。如果想生成test.pyc,可以使用python内置模块py_compile来编译,也可以执行命令python -m py_compile test.py
这样,就生成了test.pyc。加载模块时,如果同时存在.py和.pyc,python会使用.pyc运行,如果.pyc的编译时间早于.py的时间,则重新编译 .py文件,并更新.pyc文件。如下为生成的.pyc文件示例:
4 Python的应用
Python的应用主要有以下领域:
Linux/UNIX运维:提供API(Application Programming Interface应用程序编程接口),能方便进行系统维护和管理。GUI程序开发(PyQt、Kivy等)Web程序开发(Django、Flask等框架):支持最新的XML技术。移动App开发(PyQt、Kivy等):Python的PyOpenGL模块封装了“OpenGL应用程序编程接口”,能进行二维和三维图像处理。PyGame模块可用于编写游戏软件。网络爬虫(为搜索引擎、深度学习等领域提供数据源)网络编程(基于Socket等协议):提供丰富的模块支持sockets编程,能方便快速地开发分布式应用程序。很多大规模软件开发计划例如Zope,Mnet 及BitTorrent. Google都在广泛地使用它。图形处理:有PIL、Tkinter等图形库支持,能方便进行图形处理。文本处理:python提供的re模块能支持正则表达式,还提供SGML,XML分析模块,许多程序员利用python进行XML程序的开发。数据库编程:可通过遵循Python DB-API(数据库应用程序编程接口)规范的模块与Microsoft SQL Server,Oracle,Sybase,DB2,Mysql、SQLite等数据库通信。python自带有一个Gadfly模块,提供了一个完整的SQL环境。数据科学:NumPy扩展提供大量与许多标准数学库的接口。机器学习(scikit-learn、TensorFlow框架)、数据统计分析和可视化(Matplotlib、seaborn框架)。python应用举例:
Google - 谷歌在很多项目中用python作为网络应用的后端,如Google Groups、Gmail、Google Maps等NASA - 美国宇航局,从1994年起把python作为主要开发语言豆瓣网 - 图书、唱片、电影等文化产品的资料数据库网站Torchlight --Python编写的大型3D游戏,原Blizzard公司人员制作发行,开源Blender - 以C与Python开发的开源3D绘图软件 在科学研究中也得到广泛的应用