第四章 模块
如果你退出python的解释器重新进入,则有关你已定义的方法和变量都会消失。因此,如果你想编写比较长的程序,你最好用文本编辑器来为解释器准备输入和用文件作为输入来运行程序。这就是众所周知的脚本。如果你的程序更强大而负责,你可能为了方便维护想把它分为几个文件。可能你想用你已写在文件中的便利方法而不需要把它拷贝到每个程序中。
为了支持这个功能,Python提供一种方法把这些定义放置一个文件中,可以在脚本或者解释器的相互交互实例中运用他们。在python中这样的文件叫做 模块。在模块中的定义可以直接导入到其他模块或者main模块中。(你在顶层进入执行脚本或计算模式下的变量的集合)
一个模块是包含python定义和语句的文件。文件名称是由模块名加上后缀名.py组成的。在模块中,模块的名字(可以作为一个字符串)是一个作为全局变量_name_的值的变量。例如,用你最喜欢的文本编辑器在当前目录下创建一个名叫fibo.py的文件。文件内容如下:
def fib(n): # write Fibonacci series up to n
a, b = 0, 1
while b < n:
print(b, end=’ ’)
a, b = b, a+b
print()
def fib2(n): # return Fibonacci series up to n
result = []
a, b = 0, 1
while b < n:
result.append(b)
a, b = b, a+b
return result
现在进入python解释器然后用如下命令导入这个模块。
>>> import fibo
这不允许进入当前符号表中直接定义在fibo的方法名。这只能进入名为fibo的模块中。用模块名字你可以访问方法。
>>> fibo.fib(1000)
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
>>> fibo.fib2(100)
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
>>> fibo.__name__
’fibo’
39
如果你使用该方法,常常把它赋于一个本地名字
>>> fib = fibo.fib
>>> fib(500)
1 1 2 3 5 8 13 21 34 55 89 144 233 377