如何使用“from module import”重新加载导入的python模块*`

2024-04-28 00:15:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我在this useful Q&A中看到可以使用reload(whatever_module),或者在Python 3中可以使用imp.reload(whatever_module)

我的问题是,如果我说from whatever_module import *要导入呢?那么当我使用reload()时,就没有whatever_module可参考了。你们会因为我把一个模块扔到全局名称空间里而对我大喊大叫吗?:)


Tags: 模块fromimport名称空间this全局reload
3条回答

我同意“一般不要这么做”的共识,但是。。。

正确答案是:

import X
reload(X)
from X import Y  # or * for that matter

不要使用import *;它会破坏可读性。

另外,请注意,重新加载模块几乎没有用处。你不能预测你的程序在重新加载一个模块后会处于什么状态,所以这是一个很好的方法来获得不可理解的,不可生成的错误。

一个

from module import *

module获取所有“导出”对象,并将它们绑定到模块级(或任何作用域的级别)名称。您可以将模块重新加载为:

reload(sys.modules['module'])

但这对您没有任何好处:无论您的作用域是什么,级别名称仍然指向旧对象。

相关问题 更多 >