自学python系列11:python的模块
1.1什么是模块
当代码量很大时,把代码分成一些有组织的代码段。python允许“调入”一个模块,允许使用其他模块的属性来利用之前的工作成果,实现代码重用。把其他模块属性附加到你的模块中的操作叫导入。那些自我包含并有组织的代码片段是模块(module)
1.2模块和文件
一个文件是独立模块,一个模块也可以被看作一个文件。与其他可以导入类的语言不同,在python中导入的是模块或模块属性。
1.2.1模块名称空间
通过句点属性标识指定各自的名称空间-防止名称冲突的发生,
1.2.2搜索路径和路径搜索
sys.path
若你知道需要导入的模块是什么,而它的路径不在搜索路径里,那么只需要调用列表的append()方法,如:
sys.path.append('/home/wesc/py/lib')
1.3名称空间
执行期间有两个或三个活动的名称空间。这三个名称空间分别是局部名称空间,全局名称空间和内建名称空间。
1.3.1名称空间和变量作用域比较
1.3.2名称查找,确定作用域,覆盖
先局部名称空间查找,全局名称空间,内建名称控件;还找不到:
>>> yu
Traceback (most recent call last):
File "<pyshell#62>", line 1, in <module>
yu
NameError: name 'yu' is not defined
Traceback (most recent call last):
File "<pyshell#62>", line 1, in <module>
yu
NameError: name 'yu' is not defined
1.3.3无限制的名称空间
1.4导入模块
1.4.1import语句
使用import语句导入模块:
import module1
import module2
也可以一行导入多个:
import module1,modul2
1.4.2from-import语句
把指定名称导入到当前作用域
1.4.3多行导入
从一个模块导入很多属性,直到自动换行,需要一个\
from Tkinter import Tk,Frame,Button,Entry,Canvas,\
Text,LEFT,DISABLED,NORMAL,RIDGE,END
可选择多行的from-import语句:
from Tkinter import Tk,Frame,Button,Entry,Canvas
from Tkinter import Text,LEFT,DISABLED,NORMAL,RIDGE,END
from Tkinter import Text,LEFT,DISABLED,NORMAL,RIDGE,END
真正的python程序员应用python的标准分组机制(圆括号)来创建更合理的多行导入语句:
nter import (Tk,Frame,Button,Entry,Canvas,Text,LEFT,DISABLED,NORMAL,RIDGE,END)
1.4.4扩展的import语句(as)
1.5模块导入的特性
1.5.1载入时执行模块
1.5.2导入和加载
导入可以多次,但加载执行只在第一次导入时发生
1.5.3导入到当前名称空间的名称
访问模块module中的var:
from module import var
把指定模块所有名称导入到当前名称空间里:
from module import *
1.5.4被导入到导入者作用域的名字
1.5.5关于__future__
1.6模块内建函数
1.6.1__import__()
1.6.2globals()和locals()
1.6.3reload()
reload(module)
module是你想要重新导入的模块。使用reload()有一些标准。首先模块必须是全部导入(不是使用from-import),而且必须被成功导入。另外reload()函数的参数必须是模块自身而不是包含模块名的字符串,也就是说必须类似reload(sys)而不是reload('sys')