【发布时间】:2014-04-02 19:03:39
【问题描述】:
我有一个简单的用例。我需要访问函数范围之外的变量。我的问题是,我无法看到正在反映的更改。
我有:
def somefunc():
print a # None
print b # None
def main():
a = 'whatever'
b = 10
module = modules[__name__]
getattr(module, 'somefunc')
if __name__ == 'main':
# NOTE: if and b are changed here, then somefunc can see those changes
a = None
b = None
main()
注意:由于其他一些限制,我无法将参数传递给 somefunc。如何查看 somefunc 中 a 和 b 的变化?
谢谢!
【问题讨论】:
-
我没有给你-1,但这是糟糕的程序设计......你真的应该使用数据封装并传递它......全局变量只是自找麻烦
-
我完全理解。这应该单独在一个类中。我可能在几年后宣布了一些全球性的东西,但有时需要完成一些事情,无论它在架构上是否正确。 #startupproblems
-
它会比现在用更好的设计修复它更痛苦......
-
嗯,是的!看起来像。谢谢。点赞!
-
您错误地使用了两个术语:“变量”,因为这个词在 Python 中不明确,“范围”,因为所有人都对这个词的含义有误。但这是一个太复杂的话题,人们不感兴趣,我没有时间和精力去解释。
标签: python variables methods scope