【发布时间】:2024-01-11 06:31:01
【问题描述】:
我想做:
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:
这个问题是帮助我修复my previous question所必需的。
在那里,obj_cnt 在每次调用时都会被重置,从而通过“索引”(一种抽象)来调试从腌制文件中访问对象的函数,因为我试图通过按排序顺序查询索引来避免不必要的查找和读取。
以上内容应该澄清“为什么?”部分。
编辑 3:
我最终不需要做这些令人费解的事情。 我使用类solved上述问题。
不过,感谢所有在这里帮助过我的人。
【问题讨论】:
-
此代码在模块级别运行。您想在函数或模块级别执行此操作吗?
-
@juanpa.arrivillaga 那么请随意忽略这个问题并回答一些更值得你花时间的东西。感谢所有的帮助。
-
这不是关于是否值得我花时间,而是关于指出不良做法和反模式。
-
比起使用全局状态,拥有一个带有实例变量的类实例可能更有意义,或者使用生成器和
yield,或者只是传递一个参数(不清楚你为什么不这样做)不想那样做)。 -
@tdelaney 是的,我认为单例就是因为这个原因很糟糕 - 它基本上是模糊的、可变的全局状态。
标签: python syntax-error global-variables variable-declaration python-3.9