mod1.py
v1='from mod1' def f1(): global v1 print v1
main.py
import mod1 v1='from main' mod1.v1()
结果: from mod1
v1='from main' import mod1 print v1 print mod1.v1 结果: from main from mod1
import 会把模块以对象的形式引用到当前作用域
v1='hello' from mod1 import v1 print v1 结果: from mod1 #import的v1覆盖了当前的v1
把变量名复制到当前作用域(容易引起命名冲突,不建议使用)
假如我要import mod2/mod2.py
from mod2 import mod2 #多层目录用 . 链接 print mod2.v2
mod2目录下一定要有一个init.py文件(用于标识这个目录是python模块目录,内容可为空),否则无法引入mod2目录下的模块。python首次倒入某个目录时,会自动执行目录下的init.py文件,所以init.py文件一般用于初始化。
一个文件(模块)有若干内置属性,这些属性描述了模块的特征。
* __name__ * 模块的名字 * 如果是以顶层文件执行,则自动复制为“__main__” * __all__ * help(mod_name)的时候会展示__all__中的内容
mod_name="string" exec("import", mod_name)