码迷,mamicode.com
首页 > 其他好文 > 详细

使用import和exec运行模块文件的异同

时间:2015-05-28 21:33:06      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:

使用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方法重载。

使用import和exec运行模块文件的异同

标签:

原文地址:http://blog.csdn.net/u012123160/article/details/46128349

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!