2024-04-28 00:15:07 发布
网友
我在this useful Q&A中看到可以使用reload(whatever_module),或者在Python 3中可以使用imp.reload(whatever_module)。
reload(whatever_module)
imp.reload(whatever_module)
我的问题是,如果我说from whatever_module import *要导入呢?那么当我使用reload()时,就没有whatever_module可参考了。你们会因为我把一个模块扔到全局名称空间里而对我大喊大叫吗?:)
from whatever_module import *
reload()
whatever_module
我同意“一般不要这么做”的共识,但是。。。
正确答案是:
import X reload(X) from X import Y # or * for that matter
不要使用import *;它会破坏可读性。
import *
另外,请注意,重新加载模块几乎没有用处。你不能预测你的程序在重新加载一个模块后会处于什么状态,所以这是一个很好的方法来获得不可理解的,不可生成的错误。
一个
from module import *
从module获取所有“导出”对象,并将它们绑定到模块级(或任何作用域的级别)名称。您可以将模块重新加载为:
module
reload(sys.modules['module'])
但这对您没有任何好处:无论您的作用域是什么,级别名称仍然指向旧对象。
我同意“一般不要这么做”的共识,但是。。。
正确答案是:
不要使用
import *
;它会破坏可读性。另外,请注意,重新加载模块几乎没有用处。你不能预测你的程序在重新加载一个模块后会处于什么状态,所以这是一个很好的方法来获得不可理解的,不可生成的错误。
一个
从
module
获取所有“导出”对象,并将它们绑定到模块级(或任何作用域的级别)名称。您可以将模块重新加载为:但这对您没有任何好处:无论您的作用域是什么,级别名称仍然指向旧对象。
相关问题 更多 >
编程相关推荐