Python解释器简介
Python是一门编程语言,也是一个名为解释器的软件包,解释器是一种让其他程序运行起来的程序,是代码与机器的计算机硬件之间的软件逻辑层。
Python包安装到机器上,至少包括一个解释器和一套支持库,解释器可能是一个可执行程序,也可能作为链接到另一个程序的一系列库。
根据版本不同,解释器可能是C程序实现的,也可能是Java类实现的。无论如何,Python代码必须在解释器中运行。
程序执行
编写、运行Python脚本的意义,在一是从程序员还是解释器的角度去看
程序员视角
一个Python程序仅是一个包含Python语句的文本文件:
script0.py:
print('hello world')
print(2**100)
这个文件中包含两个Python语句,分别打印出一个字符串和一个表达式的计算结果。
你可以用自己喜欢的编辑器去编写Python程序,通常Python以.py结尾,这种命名在被“导入”时是必需的。
语句出入到文本文件后,由Python去执行,在屏幕上得到打印的结果:
hello world
1267650600228229401496703205376
这里博主我使用的是jupyter进行Python的学习,这段书中使用的是Windows命令行:python *.py
Python视角
当Python运行时,透过表面,还是有一些事情会发生,虽然了解Python内部不是编程所必需的要求,但对Python的运行时结构有一些基本的了解可以帮助你从宏观上把握程序的执行。
字节码编译
执行程序时,Python内部(对大多数用户是完全隐藏的)会先将源代码(文件中的语句)编译成所谓字节码的形式。
字节码是一种低级的、与平台无关的表现形式,Python将每条语句翻译成一组字节码指令,这些字节码可以提高执行速度。
字节码保持为.pyc扩展名的文件,存储在__pycache__的子目录中。
字节码也是Python对于启动速度的一种优化,当第二次运行该程序而程序有没有改动时,会直接运行字节码。
源文件的改变:Python检查源文件和字节码文件的时间戳,确认他是否必须重新编译。
Python版本:导入机制同时检查是否需要因为使用了不同的Python版本而重新编译,这些版本信息在3.2之前存储在字节码文件中,在3.2及之后,存储在字节码文件名中
当以上两者任一改变时,需要重新编译源文件为字节码。
当源文件消失后,有字节码文件的话,也可以执行程序。
当字节码文件无法生成在机器上,字节码会生成在内存中。因为字节码可以提升启动速度,所以还是能够创建字节码文件的好。
字节码只会针对那些被导入(import)的文件而生成,而不是顶层的执行脚本。大概是指当逻辑走到这一步时,遇到了import才会导入/生成字节码