首页 > 解决方案 > 如何检查全局变量是否存在,如果不存在则将其定义为全局变量?

问题描述

我想做:

if var not in globals():
     global var
     var = -1

或者

try : var
except NameError :
    global var
    var = -1

问题是 :

global var
^
SyntaxError: name 'var' is used prior to global declaration

那么可以做些什么来达到类似的效果呢?


编辑 :

这不是在模块级别,而是在函数中。该变量应该存储函数使用和更新的位置值,但需要在调用之间保持不变。

我已经知道上面的代码是不好的做法,我同意,并要求那些同意建议替代的“好的做法”方法,如果可能的话。


编辑 2:

这个问题是帮助我解决我之前的问题所必需的。在那里,obj_cnt每次调用都会重置,通过“索引”(抽象)访问腌制文件中的对象的函数会出错,因为我试图通过按排序顺序查询索引来避免不必要的查找和读取。

以上应该清除“为什么?” 部分。


编辑 3:

我最终不需要做这些令人费解的事情。我通过使用类解决了上述问题。

不过,感谢所有在这里帮助我的人。

标签: pythonsyntax-errorglobal-variablesvariable-declarationpython-3.9

解决方案


更改全局变量被认为是不好的做法(请参阅为什么全局变量是邪恶的?,但为了知识起见,您可以这样做:

if 'var' not in globals():
     globals()['var'] = var
     var = -1

对于你想要做的事情。


推荐阅读