使用import和exec运行模块文件的异同
实例代码
#script1.py
import sys
print(sys.platform)
x = ‘span‘
print(x*8)
在cmd中
>>> import script1
win32
spanspanspanspanspanspanspanspan
>>> exec(open(‘script1.py‘).read())
win32
spanspanspanspanspanspanspanspan
看上去毫无差别,但是
>>> x = 999
>>> import script1
>>> x
999
>>> exec(open(‘script1.py‘).read())
win32
spanspanspanspanspanspanspanspan
>>> x
‘span‘
说明:
exec有着和import类似的效果,但是它从技术上不会导入模块,每次以这种方式调用exec的时候,都会重新运行文件,像在调用它的地方粘贴了代码一样,对于当前正在使用的变量有潜在的默认覆盖的可能,但是import不会如此,每个进程只会运行文件一次,并且把文件生成到一个单独的模板名称空间去,它的赋值不会改变原有作用域中的变量,但是付出的代价是,当import的模块在调用完import后被修改了,需要调用reload方法重载。
时间: 2024-10-15 21:50:06