即使定义了__name__,sys.modules [__ name__]也会抛出错误吗?

时间:2018-03-23 10:56:47

标签: python python-3.x module sys

是否可以定义__name__ - 我们可以在某个地方的脚本中编写以下内容:

x = __name__

...然而,下面的行会引发错误?

module  = sys.modules[__name__]

1 个答案:

答案 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