Python “之后如何重新加载”;从<;模块>;导入*“;?
我可以在正常导入时简单地重新加载模块(imp.reload(模块或别名))。 但在导入到当前名称空间(从模块导入*)后是否可以重新加载所有内容Python “之后如何重新加载”;从<;模块>;导入*“;?,python,module,python-import,Python,Module,Python Import,我可以在正常导入时简单地重新加载模块(imp.reload(模块或别名))。 但在导入到当前名称空间(从模块导入*)后是否可以重新加载所有内容 imp.reload(module)在执行模块导入*中的操作时,如果说“name:module未定义”,则该模块中的所有内容都会被提取到当前名称空间中,并且在最后删除对模块的引用。但是,由于模块缓存,仍然可以从sys.modules访问模块对象,以便在以后进行更多导入时,不必再次获取模块 也就是说,实现您期望的一种方法是: import sys from
imp.reload(module)在执行模块导入*中的
操作时,如果说“name:module未定义”,则该模块中的所有内容都会被提取到当前名称空间中,并且在最后删除对模块的引用。但是,由于模块缓存,仍然可以从sys.modules
访问模块对象,以便在以后进行更多导入时,不必再次获取模块
也就是说,实现您期望的一种方法是:
import sys
from foo import *
print A, B #prints 1, 2
A, B = 100, 200
mod = reload(sys.modules['foo'])#use imp.reload for Python 3
vars().update(mod.__dict__) #update the global namespace
print A, B #prints 1, 2
作为旁注,使用import*
是:
请注意,通常情况下,从模块或
软件包是不受欢迎的,因为它经常导致可读性差的代码。
但是,可以使用它来保存交互式会话中的键入
副本?是的。我只在互动会话中使用它。我是C++的家伙,我意识到从名字空间导入所有东西的危险。谢谢