在某些Python模块中,我有这样的代码:
try:
someGlobal
except NameError:
someGlobal = []
如果我想支持模块重新加载并且某些某些对象不能被覆盖(例如因为我知道它是直接引用的),这可能很重要。
许多编辑(例如PyCharm)将此标记为错误。有没有其他方法来编写更多Python惯用的相同代码?或者这已经是Python的惯用语,编辑抱怨这是错误的吗?
答案 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)
是一个错误,至少给出了编辑器可用的信息。所以编辑没有错;只是你专门为这个错误编码。