Python的维基百科说明:“是一种广泛使用的解释型,高级编程,通用型语言,具有动态类型和垃圾回收功能,能够自动管理内存使用”
Python的设计哲学:优美优于丑陋,明了优于隐晦
简单优于复杂,复杂优于凌乱
扁平优于嵌套,稀疏优于稠密
可读性很重要
【1】背景知识
【1.1】编译型VS解释型
首先:Python是一门解释型语言(虽然有编译过程)
程序开发者编写的代码是高级语言,计算机是看不懂的,故需要一个“翻译官”将我们写的代码转换成计算机可以看明白的,这个“翻译”的过程有2中——编译和解释
编译型语言:先编译,再运行,在程序运行之前,先通过编译器将代码转化成机器码,然后再交给计算机运行——典型代表C语言
解释型语言: 边解释边运行,程序直接开始运行,解释器逐行给计算机进行解释,接着直接运行
————————————————————————————————
【1.2】字节码
字节码并不是机器码,而是可由解释器执行的低级指令集合
————————————————————————————————
【2】Python运行机制
Python的运行其实也需要编译这一步,编译成字节码,但大多数情况下Python是一门解释型语言。
运行python程序(.py文件)时,我们会发现生成了一种.pyc文件,.pyc文件中存储着python程序编译后的字节码
python运行机制: 首先将.py文件编译成字节码,存储在.pyc文件中(该字节码在虚拟机上运行非cpu)。当python程序第二次运行时,首先程序会在硬盘中寻找.pyc文件,如果找到直接运行,否则重复上述过程。
由于引入了字节码,其加载速度比之前的.py文件有所提高,而且还可以实现源码隐藏,一定程度上可以反编译
————————————————————————————————
【3】解释型语言优点
解释型语言具有独立于平台的一大优势:只要Python字节码和虚拟机版本一致,就可以在任何平台上运行
python是动态语言:在c++等静态语言中,必须先声明变量类型,并在编译的时候检查所有的差异,而Python作为弱类型语言,检查变量类型和执行操作的有效性由解释器完成,故Python不用先声明变量
————————————————————————————————
【4】解释型语言的缺点
动态类型提高了代码的自由度,但同时也提高了代码的风险,有时也难以调优
python经常被指责“速度慢”,因为每一次解释字节码需要许多额外工作
————————————————————————————————
【5】垃圾回收
内存空间有限,需要不断的将这些垃圾回收,早期的编程语言,内存的分配主要依靠手动操作,现在都采用垃圾回收站代替人工进行。
垃圾回收: 不再使用的变量要从内存中移除或移动到别的地方
内存管理的方式:
简化方式: 利用 “引用次数”,跟踪变量的引用次数,当次数下降到0,则删除对象(python中无法禁用此功能)
利用“生成垃圾回收”线程方法:当对象引用自己或者两个对象相互引用时则无法使用“引用次数”
————————————————————————————————
【6】__pycache__文件夹
__pycache__文件夹下保存着 .pyc/.pyo 文件
————————————————————————————————Python从入门到精通www.zhihu.com