全局变量的NameError

时间:2014-12-27 17:43:47

标签: python

在某些Python模块中,我有这样的代码:

try:
    someGlobal
except NameError:
    someGlobal = []

如果我想支持模块重新加载并且某些某些对象不能被覆盖(例如因为我知道它是直接引用的),这可能很重要。

许多编辑(例如PyCharm)将此标记为错误。有没有其他方法来编写更多Python惯用的相同代码?或者这已经是Python的惯用语,编辑抱怨这是错误的吗?

2 个答案:

答案 0 :(得分:4)

我和

一起去
if 'someGlobal' not in dir():
    someGlobal = 23

这具有简单的优点,但如果模块有很多全局变量,则可能有点慢,因为dir()list并且in运算符是{ {1}}。

对于速度而言,在简单性方面处于适度劣势,

O(N)

应该更快,因为if 'someGlobal' not in vars(): someGlobal = 23 vars(),因此dict运算符为in

答案 1 :(得分:0)

是一个错误,至少给出了编辑器可用的信息。所以编辑没有错;只是你专门为这个错误编码。