第21章 模块:宏伟蓝图
import:使客户端(导入者)以一个整体获取一个模块
from:允许客户端从一个模块文件中获取特定的变量名
imp.reload:在不中止程序的情况下,提供了一种重新载入模块文件代码的方法。
import如何工作
模块搜索路径(sys.path)
第22章 模块代码编写基础
reload
第23章 模块包
包导入基础
import dir1.dir2.mod
from dir1.dir2.mod import x
from . import spam #导入位于当前文件所在目录的模块spam
from .spam import name #从名为spam的模块导入变量name
from .. import spam #从当前包的父目录的相对导入
#例如位于某个模块A.B.C中的代码做如下导入
from . import D #import A.B.D
from .. import E #import A.E
from .D import X #import A.B.D.X
from ..E import X #import A.E.X
第24章 高级模块话题
在模块中隐藏数据
import modulename as name
from modulename import attrname as name
4. 模块是对象:元程序,获取M模块内名为name的属性的方法有:可以使用结合点号运算,或者对模块的属性字典进行索引运算(在内置\__dict__属性中显示),python也在sys.modules字典中导出所有已加载的模块的列表,并提供内置函数getattr以字符串名来取出属性。
M.name
M.__dict__['name']
sys.modules['M'].name
getattr(M,'name')
5. 用名称字符串导入模块:可以将导入语句构建成一个字符串传递给exec内置函数进行导入,也可以将要导入的模块名称字符串传递给内置的\__import__函数进行导入。
6. 在导入时,模块文件顶层的程序代码(不在函数内)一旦python运行到时,就会立即执行,因此,该语句是无法引用文件后面位置赋值的变量名。位于函数主体内的代码直到函数被调用后才会运行,因为函数内的变量名在函数实际执行前都不会解析,通常可以引用文件内任意地方的变量。