ard*_*bro 3 python module python-import
我可以在正常导入时简单地重新加载模块(imp.reload(模块或别名)).但是可以在导入到当前命名空间后重新加载所有内容(来自模块导入*)吗?
imp.reload(模块)不能说"name:module not defined"
当您执行from module import *
从该模块执行的所有操作时,将获取到当前命名空间,并在最后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
Run Code Online (Sandbox Code Playgroud)
作为一个侧面说明,使用import *
时通常是令人难以接受的:
请注意,一般来说,从模块或包导入*的做法是不受欢迎的,因为它经常会导致代码难以理解.但是,可以使用它来保存交互式会话中的输入.
归档时间: |
|
查看次数: |
1188 次 |
最近记录: |