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一样,对于当前正在使用的变量有潜在的默认覆盖的可能。

posted @ 2015-04-26 17:28  Mr.Autumn  阅读(218)  评论(0)    收藏  举报