Python学习笔记十二
模块的导入
模块可以包含函数、成员变量、可执行语句等,这些语句通常用于初始化模块。它们只在第一次导入时执行,导入的方式有多种:
1. 直接导入模块名称,就像上面的import fibo这种只是把自定义的模块名称放到了系统模块的临时符号表中了,要想访问这个模块中的成员或函数还需要使用导入的模块名称去访问,就像上面的例子一样;
2. 导入方式是把这个模块的函数、成员变量名称直接导入到当前系统模块的临时符号表中,例如:
>>>from fibo import fib, fib2
>>>fib(500)
1 1 2 3 5 8 13 21 34 55 89 144 233 377
这样可以直接使用其函数而不必通过其模块名称去访问函数;
3. 使用 *号导入模块中定义的所有名字:
>>>from fibo import*
>>>fib(500)
1 1 2 3 5 8 13 21 34 55 89 144 233 377
不过这种导入方式不会导入以下划线(_)开头的名称,大多数情况下Python程序员不要使用这个便利的方法,因为它会引入一系列未知的名称到解释器中,这很可能隐藏你已经定义的一些东西。注意一般情况下不赞成从一个模块或包中导入 * ,因为这通常会导致代码很难读。不过,在交互式会话中这样用是可以的,它可以让你少敲一些代码。
如果程序比较大,需要在一个模块中导入另一个模块(一般只导入模块名称),习惯上将所有的import 语句放在模块(或脚本)的开始,但这不是强制性的,被导入的模块的名字会放在导入模块的全局符号表中。
注意: 出于性能考虑,每个模块在每个解释器会话中只导入一遍。因此,如果你修改了你的模块,你必需重新启动解释器 —— 或者,如果你就是想交互式的测试这么一个模块,可以使用imp.reload(), 例如 import imp; imp.reload(modulename) 即相当于重新导入模块。