在一些Python模块中,我有如下代码:
try:
someGlobal
except NameError:
someGlobal = []如果我想支持模块重新加载,并且某些对象不能被覆盖(例如,因为我知道它是直接引用的),这可能很重要。
许多编辑器(例如PyCharm)将此标记为错误。是否还有其他方法来编写同样的代码,这更符合Python的习惯呢?或者这已经是Python的习语了,而抱怨这一点是编辑们的过错吗?
发布于 2014-12-27 17:57:53
我会和
if 'someGlobal' not in dir():
someGlobal = 23这具有简单性的优点,但是如果模块有很多全局,这可能会有点慢,因为dir()是一个list,而它上的in操作符是O(N)。
就速度而言,在简单性方面处于一个小小的劣势,
if 'someGlobal' not in vars():
someGlobal = 23这应该更快,因为vars()是一个dict,所以它上的in操作符是O(1)。
发布于 2014-12-27 17:47:18
这是一个错误,至少给出了编辑器可用的信息。所以编辑器没有错,只是您专门为错误编写代码。
https://stackoverflow.com/questions/27669827
复制相似问题