【发布时间】:2017-05-14 02:04:45
【问题描述】:
import utils; reload(utils)
from utils import *
为什么需要加载两次? 'reload' 不是内置函数。对吧?
【问题讨论】:
-
reload是python 2中的内置函数docs.python.org/2/library/functions.html#reload
标签: python python-2.7
import utils; reload(utils)
from utils import *
为什么需要加载两次? 'reload' 不是内置函数。对吧?
【问题讨论】:
标签: python python-2.7
最好的方法是查看reload document,上面写着:
重新编译 Python 模块的代码并重新执行模块级代码,定义一组新的对象,这些对象绑定到模块字典中的名称。扩展模块的init函数不会被第二次调用。
与 Python 中的所有其他对象一样,旧对象仅在其引用计数降至零后才会被回收。
模块命名空间中的名称已更新以指向任何新的或更改的对象。
其他对旧对象的引用(例如模块外部的名称)不会重新绑定以引用新对象,并且必须在它们出现的每个命名空间中更新,如果这是想要的。
【讨论】:
在这种情况下“重新加载”有什么作用?
这取决于utils 的作用...例如,如果导入utils 有副作用,那么该效果将再次发生。
另请注意,在任何生产代码中使用reload 绝对是您要避免的事情。 reload 存在的主要原因是为了交互使用...
【讨论】:
utils 有副作用。