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

新手上路,请多包涵

我在 这个有用的问答 中看到可以使用 reload(whatever_module) 或者,在 Python 3 中, imp.reload(whatever_module)

我的问题是,如果我说 from whatever_module import * 要导入怎么办?然后,当我使用 reload() 时,我没有 whatever_module 可以参考。你们会因为我把整个模块扔进全局命名空间而对我大喊大叫吗? :)

原文由 murftown 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 663
2 个回答

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

正确答案是:

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

原文由 Catskul 发布,翻译遵循 CC BY-SA 4.0 许可协议

切勿使用 import * ;它破坏了可读性。

另外,请注意重新加载模块几乎没有用。您无法预测您的程序在重新加载模块后最终会处于什么状态,因此这是获得难以理解、无法重现的错误的好方法。

原文由 Allen 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题