An alternative to global in Python
我现在有这样的代码:
1 2 3 4 5 6 7 | cache = 1 def foo(): global cache # many # lines # of code cache = 2 |
但是,这可能会导致将来很难找到错误,因为读者可能不会注意到
我怎样才能避免这个陷阱呢?
1 2 3 4 5 | class Cache: myvar = 1 def foo(): Cache.myvar = 2 |
是这样的,
我选择这个,因为它在字典是另类的,让自我完成的变量名称。
1 2 3 4 | cache = 1 def foo(): return 2 cache = foo() |
或
1 2 3 4 | d = {'cache': 1} def foo(x): x['cache'] = 2 foo(d) |
"读者可能认为全球变unintentionally已更新"是不是多pitfall)。你有你的人期望的是对Python代码知道如何阅读的作品。如果你想使它额外的清除,使用注释。这就是他们再去。
使用全局变量是不好的编程实践。在一个可变参数的传递函数:返回的东西,它使一个函数中使用。功能可以被分配到的变量是Python的知识工程。