是否可以定义__name__
- 我们可以在某个地方的脚本中编写以下内容:
x = __name__
...然而,下面的行会引发错误?
module = sys.modules[__name__]
答案 0 :(得分:0)
除非您篡改__name__
或sys.modules
,否则不应引发任何错误,因为__name__
应始终位于sys.modules
。
除非您忘记导入sys
。
# No import
sys.modules[__name__] # raise NameError
如果您使用的是KeyError
,则可能会使__name__
蒙上阴影。
import sys
__name__ = 'foo'
sys.modules[__name__] # raise KeyError
或者,您可能不太可能覆盖sys.modules
。
import sys
sys.module = {}
sys.module[__name__] # raise KeyError