我目前有这样的代码:
cache = 1
def foo():
global cache
# many
# lines
# of code
cache = 2
Run Code Online (Sandbox Code Playgroud)
但是,这可能导致将来难以发现错误,因为读者可能不会注意到global cache出现在上面某处cache = 2.或者,贡献者可能会错误地添加def bar(): cache = 2并忘记添加global cache.
我怎样才能避免这个陷阱?
Yar*_*riv 15
class Cache:
myvar = 1
def foo():
Cache.myvar = 2
Run Code Online (Sandbox Code Playgroud)
这样,Cache.myvar实际上是"全球性的".可以从任何地方读取/写入它.
我更喜欢这个替代字典,因为它允许自动完成变量名称.
cache = 1
def foo():
return 2
cache = foo()
Run Code Online (Sandbox Code Playgroud)
要么
d = {'cache': 1}
def foo(x):
x['cache'] = 2
foo(d)
Run Code Online (Sandbox Code Playgroud)