本节书摘来自异步社区《Python参考手册(第4版•修订版)》一书中的第1章,第1.16节,作者David M. Beazley,更多章节内容可以访问云栖社区“异步社区”公众号查看。
1.16 模块
随着程序变得越来越大,为了便于维护,需要把它分为多个文件。为此,Python允许把定义放入一个文件中,然后在其他程序和脚本中将其作为模块导入。要创建模块,可将相关的语句和定义放入与模块同名的文件中(注意,该文件的后缀必须是.py)。例如:
# 文件: div.py
def divide(a,b):
q = a/b # 如果a和b是整数,则q也是整数
r = a – q*b
return (q,r)
要在其他程序中使用该模块,可以使用import语句:
import div
a, b = div.divide(2305, 29)
import语句创建了一个新的命名空间,并在该命名空间中执行与.py文件相关的所有语句。要在导入后访问命名空间的内容,只要使用该模块的名称作为前缀,正如上面例子中的div.divide()一样。
如果要使用不同的名称导入模块,可以给import语句加上可选的as限定符,如下所示:
import div as foo
a,b = foo.divide(2305,29)
要将具体的定义导入到当前的命名空间中,可使用from语句:
from div import divide
a,b = divide(2305,29) # 不再使用div前缀
要把模块的所有内容加载到当前的命名空间中,还可以使用以下语句:
from div import *
与对象一样,dir()函数可以列出模块的内容,是进行交互式实验的有用工具:
>>> import string
>>> dir(string)
['__builtins__', '__doc__', '__file__', '__name__', '_idmap',
'_idmapL', '_lower', '_swapcase', '_upper', 'atof', 'atof_error',
'atoi', 'atoi_error', 'atol', 'atol_error', 'capitalize',
'capwords', 'center', 'count', 'digits', 'expandtabs', 'find',
...
>>>