Python模块 - littleboy12580/learning_python GitHub Wiki
模块
模块搜索路径
在导入一个模块后,Python会按以下顺序进行搜索
- 程序的主目录
- PYTHONPATH目录
- 标准链接库目录
- 任何.pth文件的内容
模块的使用
1.import语句
import会读取整个模块,因此必须进行定义后才能读取它的变量名
import module1
module1.printer('Hello World')
2.from语句
from会把变量名复制到另一个作用域,因此可以直接在脚本中使用复制后的变量名而不需要通过模块
from module1 import printer
printer('Hello World')
3.from *语句
当使用*时,会取得模块顶层所有赋了值的变量名的拷贝
from module1 import *
printer('Hello World')
导入和作用域
导入操作不会赋予被导入文件中的代码对上层代码的可见度,即被导入文件无法看见导入的文件内的变量名
#moda.py
X = 88
def f():
global X
X = 99
#modb.py
X = 11
import moda
moda.f()
print(X,moda.X)
最后的输出为11 99
reload()重载模块
1.reload()的一般用法为:导入一个模块,在文本编辑器内修改其源代码,然后将其重载;当调用reload时,Python会重读模块文件的源代码并重新执行其顶层语句,因此被导入文件中的变量名都会换成新值。
2.重载会影响所有使用import读取了模块的客户端,但不会影响重载之前使用from来读取属性的客户端,只会影响重载之后使用from的客户端
模块包
1.包导入是把计算机上的目录变成另一个Python命名空间,而属性则对应于目录中所包含的子目录和模块文件。
import dir1.dir2.mod
上面的dir1.dir2.mod相当于路径dir0\dir1\dir2\mod.py,其中dir0目录需要添加在模块搜索路径中。
2.如果选择使用包导入,则包导入语句的路径中的每个目录内都必须有__init__.py这个文件,其中容器目录dir0不需要这类文件。 例如上面的代码中dir1和dir2中都必须有一个__init__.py文件。