python 模块
1、什么是模块?
每一个.py文件都是一个模块, 其他文件可以通过导入一个模块读取这个模块的内容,相当于C中的include......一个大型程序往往呈现出多模块的形式,其中一个模块文件被设计为主文件(顶层文件)。
2、import, from 和 reload
- 模块只可以导入一次
导入是一个开销很大的操作,以至于每个程序运行只可以导入一次。但如果真的想要在同一次会话中再次运行文件,需要调用imp标准库模块中可用的reload函数(这个函数也是一个Python2.6内置函数,但在Python3.0中不是内置的)
reload函数希望获得的参数是一个已经加载了的模块对象的名称,所以如果在重载之前,请确保已经成功导入了这个模块。
reload函数在模块对象的名称前还需要括号,import则不需要。reload是一个被调用的函数,其返回值是一个Python模块对象,而import是一个语句。
- 模块的显要特性:属性
从一般意义上来说,模块往往就是变量名的封装,被认作是命名空间。在一个包中的变量名是所谓的属性:也就是说,属性就是绑定在特定的对象上的变量名。
表面上来看,一个模块文件的变量名可以通过两个Python语句读取——import和from,以及reload调用。
from和import很相似,只不过增加了对载入组件的变量名的额外赋值。从技术上讲,from复制了模块的属性,以便属性能够成为接收者的直接变量。
一旦开始在模块文件编写多个变量名,内置的dir函数就可以用它来获得模块内部的可用的变量名的列表。
- 模块和命名空间
模块导入是一种运行代码文件的方法。模块同样是python程序最大的程序结构。
每个模块文件是一个独立完备的变量包,即一个命名空间。
- 使用exec运行模块文件(从本质上,这种方式并没有导入模块)
exec(open('script1.py').read*())内置函数调用,是从交互提示模式启动文件而不必导入以及随后的重载的一种方法。
每次exec都运行文件的最新版本,而不需要随后的重载。
缺点是,由于exec的工作机制就好象在调用它的地方粘帖了代码一样,和from一样,对于当前正在使用的变量有潜在的默认覆盖的可能。

浙公网安备 33010602011771号