导入注意 :导入只发生一次
在默认的情况下,Python只对每个文件的每个进程做一次操作,之后的导入操作都只会取出已加载的模块对象。
模块文件中的顶层程序代码通过只执行一次,你可以凭借这种特性对变量进行初始化。
例如:定义一个simple.py文件
print('hello')
spam = 1
第一次导入 import simple,执行simple.spam 值为1,设置simple.spam =2
第二次导入 import simple ,simple.spam不会在初始化,simple.spam = 2
模块的命名空间
导入和作用域
如果不加上global X,打印X值是88,加上值是99
__author__ = 'wangle1' X=88 def f(): #global X X=99 f(); print(X)
命名空间的嵌套
可以使用:有时需要一个模块的代码通过某种导入后再一次运行,需要使用reload内置函数
重载模块
要强制使代码重新载入并重新运行,需要调用reload内置函数
reload函数会强制以加载的模块
reload函数可以修改程序的一些部分,而无须停止整个程序。
Reload的使用
一、与import和from不同的是
1:reload是Python中的内置对象,而不是语句
2:传给reload的是已经存在的模块对象,而不是变量名
3:reload在python3中位于模块之中,并且必须导入自己
print('hello') spam =3
>>> import simple
hello
>>> simple
<module 'simple' from 'D:\python\simple.pyc'>
>>> simple.spam
3
>>> import simple
>>> simple.spam
3
print('hello') spam =4
>>> from imp import reload
>>> reload(simple)
hello
<module 'simple' from 'D:\python\simple.py'>
>>> simple.spam
4