Python模块 - littleboy12580/learning_python GitHub Wiki

模块

模块搜索路径

在导入一个模块后,Python会按以下顺序进行搜索

  1. 程序的主目录
  2. PYTHONPATH目录
  3. 标准链接库目录
  4. 任何.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文件。