1. 当 python程序执行的时候,源代码会被编译成字节码。字节码能加速程序运行;字节码和平台无关;字节码保存在以 .pyc结尾的文件里面(在和python代码文件同目录的地方)如果没有写权限,字节码保存在内存里,程序退出的时候被丢弃。字节码文件不会每次都重新生成,只要文件没有改变,字节码文件就不会重新生成
2.PVM执行字节码
3. 任何一个以.py结尾的 python代码文件都是一个模块(module);其它文件通过 import一个模块(module)来访问定义在这个 module里的元素;import会把一个文件加载进来,并且赋予访问这个文件里的内容的权限;外界通过模块的属性(attribute)来访问这个模块;其中一个文件是 main或者top-level文件,这个文件是被 launch启动整个程序的。当一个文件 import一个模块的时候,这个文件会去搜索这个文件,把它编译成字节码,然后执行。但是,这个过程只有在第一次import这个模块的时候才执行
如果使用 imp里的reload函数,则每次reaload,上面的过程都会走到
from imp import reload
reload(test)
reload()里的模块必须是已经 load的。
使用 import时,被加载进来的模块的名字必须加上模块名:
import threenames
print(threenames.x)
如果使用 from, 则可以直接使用变量名
frrom threenames import x
print(x)
reload()没有传递性
4. module是一个包含了变量名字的名字空间,变量名字叫做 attribute;通过 import,能够访问模块的位于 top-level的名字(函数名,变量名,类名。。)获取文件的名字可以使用 import, imp语句和 reload函数;不同的模块可以有相同的变量名字。。
5. exec(open('module.py').read())每次都 执行最新的代码,把模块的名字直接拷贝到当前的名字空间