第二章 Python介绍
2.1 Python的来历与特点:
2.1-1:1991年由荷兰人Guido van Rossum(吉多.范罗苏姆,音译)发明pthon,由ABC language发展而来。
python特点:
解释型:python是一种解释型language,采用伪编译方式(现将伪编译解释如下:python在运行code的时候,会先将py档透过解释器转换成pyc档,这里笔者要吐槽一下,笔者在网络上看到,有很多人将字节码等价于pyc档,这准确吗?据笔者了解,pyc档是存储字节码的container,这样表述难道不会给beginner造成误解?至于字节码是PVM可以理解的language,PVM则依据当前的操作系统将字节码转换成对应的machine language)。编写完程序之后,要有解释器才能run。
可移植性:用解释器作为接口读取和running code的最大优势就是可移植性。(任何现存的operating system如Linux、Windows等在安装相应version的解释器之后,python code无需再次修改就可以直接run ,这是python language存在这个advantage,树莓派与其他微处理器在内的小型设备才将python作为它们的编程language。)
object-oriented:
交互式:
胶水:粘合C/C++、Fortran等其他编程language,(笔者可以理解这种方式,但是,并未进行过尝试),胶水可以弥补python执行速度慢的缺点(author在此认为速度慢是python的唯一缺点,很棒,希望读者也可以在日后领略该language的美妙)。
开源:
2.2Python解释器:
解释器的effect:读取并解释用户provide的源码。既可以一个接收单条指令(命令行)、亦可直接执行多行指令(封装成py档)。解释器开始running,以单词为单位扫描code,解释器将每个单词组织成表示程序逻辑结构的树状结构,再然后会被一个个转换成字节码,字节码再被PVM(Python虚拟机)执行。解释过程结束。pvm是解释器的核心部分。
python的标准解释器是Cython,它是完全使用C language开发的。(此处再列举一些其他language开发的解释器:Java开发的Jython、C#开发的IronPython,只适用于windows、Python开发的PyPy)
笔者对于上述解释器并不了解,先将原典中关于上述解释器的介绍摘抄如下:
Cython:Cython项目以开发能把Python code转换为等价C code的编译器为基础。C code随后在Cython环境中执行。这种编译机制使得在Python code中嵌入能够提升效率的C code成为可能。Cython可以被视为一门新的编程language,它的发明实现了两种编程language的融合。在http://docs.cython.org中会有更加详细的介绍。
Jython:由Jim Hugunin在1997年开发(http://www.jython.org)。Jython是用Java language实现的Python编程language。
(笔者认真研究了一下解释器的原理,认为这是一个非常有意思、且有深度的知识体系,足以让笔者另起文章,细细论述,如若三言两语,一笔带过,实在心中过意不去,待笔者得闲之时,笔者会在将来整理好文稿,将其理论细细论述,其原理及其内涵绝对不是一两句可以概述完成的。)
PyPy:PyPy解释器是一种即时(just-in-time,JIT)编译器,它在run的时候直接将Python code转换为机器码。
(上述解释器,笔者实在没有见解,实在是笔者初次接触,刚在在网络上浏览相关资讯,发现并不是浅显的事物,实在需要细细琢磨,才可品得其中滋味,故笔者不该妄加论述,更不该从网络上随意摘取咨询就此了事,笔者实恐误认子弟,故将原典相关content载述上文,往读者可以自行体悟,若还心存疑惑,建议查阅原典“Python数据实战分析” Fabio Nelli著,本国“杜春晓”老师进行翻译,笔者不知道是否有时间细细整理资料,再供读者参考,一是笔者时间紧张,因而习惯上就会只专注于主要目的上,一是读者刚才查询相关资讯,实感其content之广,并非三言两语可以概括,如若笔者敷衍了事,内心实在不安,故烦请读者可以自行学习,而笔者会在时间、精力允许得情况之下,发布相关资讯)。
2.3Python2与Python3
目前,Python社区仍处于从系列2解释器到系列3解释器的过渡阶段。(译作发行于2016年,现在2025年,在笔者身边很少会出现使用python2的情况)。
当Guido van Rossum决定对python做出重大改进的时候,发现改动会使得新的python与已有的code不兼容,为了解决兼容性问题,其决定创建python3,并且为了保证与已有code兼容,他还决定维护与历史code相兼容的version,即2.7version。
python3.0在2008年发布,2.7于2010年发布,python官方决定2.7之后不再发布大的version。
2.4 2.5 安装Python Python发行版
Python的install此处不再赘述,网络上有很多资讯,读者自行查询。
python发行版,含有许多python包,与单独download、install只包含标准库的解释器,然后用到某个库再单独install,直接install python发行版更加便捷。
发行版的核心是包管理器,它能够自动管理、install、update、配置、和delete作为发行版一部分的python包。user请求所需要的包时(比如要install一个包),包管理器通过会透过因特网分析user所要install的包的版本号以及它所依赖的包,如果依赖的包不存在,会顺便download。
下面介绍一些常见的发行版:
Anaconda:其有一个特点是,它能够管理python版本的多种开发环境(这点笔者经过实验,确实非常方便),在笔者学习python、python数据分析的过程中,也是基于该发行版来操作的,确实很方便,但是,其也有一个广为人所诟病的地方,就是其会内建操作者很多并不需要的应用,因此会显得非常冗余。
Enthought Canopy:该发行版只有Canopy Express免费。(笔者并未涉猎该发行版,因此留予读者自行探索)。
Python(x,y):只支持Windows操作系统的一种免费发行版。
2.6 使用Python 2.7编写Python code
这两小节属于python基础知识,笔者一是假设读者已经掌握了python基础,二是笔者精力、时间有限,实在想将精力放于和数据分析相关的content上。
笔者连续工作进三个小时,已经是精力耗尽之态,心中依旧想进行下去,但实恐文章质量下降,因而封笔,第二章剩余content笔者会在日后得闲之日发布,读者若可以从本人文章中,收获一丝火花,笔者内心非常开心,而如果在文章结尾读者依旧心中疑虑重重,笔者建议,先将杂念放下,去做些放松的事情,去呼吸呼吸新鲜空气,去做些自己开心的事情,笔者写文章之初衷,也是为了抒发心中之寂寥,在挥毫之时,求得心中片刻之宁静,最后,很开心你能读到本片文章!