模块—文件。
搜索路径: 搜索路径是一个目录列表,在这些目录中搜索想要加载的模块。
PYTHONPATH环境变量:冒号分割的目录路径。
sys模块的sys.path变量:是一个Python的列表变量,可以append(‘new_path’).
sys.modules变量:是一个字典,包含了已加载模块的信息。
路径搜索: 在搜索路径中查找要加载模块的行为。
命名空间和变量查找: 变量由命名空间唯一标识。
模块加载后模块包含的对象由以模块名为命名空间的标识唯一指定。导入模块语句:
importmodule1[, module2[,... moduleN]]
importmodule1 as newname
你可以在你的模块里导入指定的模块属性。 也就是把指定名称导入到当前作用域。 使用
from-import 语句可以实现我们的目的, 它的语法是:
from module import name1[,name2[,... nameN]]
这样在使用模块中的对象是不需要再用模块名限定。
from module1 import obj1 asnewname
包:可以用目录结构管理模块,每个包就是一个目录,包名字就是目录名。同一目录下的模块属于同一个包,包可以有子包,即子目录。使用的时候用目录路径标识所引用对象。可以一次导入摸个包/子包下所有的模块和子包。
import package.subpachage.*
加载:
当模块被导入时,他的直接代码会被运行。直接代码是指没有被函数封装的第一级代码。当多次导入一个模块时,只做一次加载操作。
源代码编码:
因为导入模块时是导入了源代码,因为不同的模块可能使用了不同的代码编码。 所以在模块的源代码头部需要指明所使用的编码方式。默认是ASCII编码。例:
一个UTF-8 编码的文件可以这样指示:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
模块管理相关模块
imp - 这个模块提供了一些底层的导入者功能。
modulefinder - 该模块允许你查找 Python 脚本所使用的所有模块。你可以使用其中的
ModuleFinder 类或是把它作为一个脚本执行, 提供你要分析的(另个) Python 模块的文件
名。
pkgutil - 该模块提供了多种把 Python 包打包为一个"包"文件分发的方法。 类似 site
模块,它使用*.pkg 文件帮助定义包的路径, 类似site 模块使用的*.pth 文件。
site - 和 *.pth 文件配合使用, 指定包加入 Python 路径的顺序, 例如 sys.path ,
PYTHONPATH 。你不需要显式地导入它, 因为 Python 导入时默认已经使用该模块。你可能
需要使用-S 开关在Python 启动时关闭它。你也可以完成一些 site 相关的自定义操作,
例如在路径导入完成后在另个地方尝试。
zipimport - 你可以使用该模块导入 ZIP 归档文件中的模块。 需要注意的是该功能已经"
自动"开启, 所以你不需要在任何应用中使用它。在这里我们提出它只是作为参考。
distutils - 该模块提供了对建立、 安装、分发 Python 模块和包的支持。 它还可以帮助
建立使用 C/C++ 完成的 Python 扩展。