Python “之后如何重新加载”;从<;模块>;导入*“;?

Python “之后如何重新加载”;从<;模块>;导入*“;?,python,module,python-import,Python,Module,Python Import,我可以在正常导入时简单地重新加载模块(imp.reload(模块或别名))。 但在导入到当前名称空间(从模块导入*)后是否可以重新加载所有内容 imp.reload(module)在执行模块导入*中的操作时,如果说“name:module未定义”,则该模块中的所有内容都会被提取到当前名称空间中,并且在最后删除对模块的引用。但是,由于模块缓存,仍然可以从sys.modules访问模块对象,以便在以后进行更多导入时,不必再次获取模块 也就是说,实现您期望的一种方法是: import sys from

我可以在正常导入时简单地重新加载模块(imp.reload(模块或别名))。 但在导入到当前名称空间(从模块导入*)后是否可以重新加载所有内容


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++的家伙,我意识到从名字空间导入所有东西的危险。谢谢