【发布时间】:2012-04-19 20:10:38
【问题描述】:
假设我有一个全局变量a。在函数定义中,我们还有一个名为a 的局部变量。有没有办法将全局变量的值赋值给局部变量的值?
a = 'foo'
def my_func(a = 'bar'):
# how to set global a to value of the local a?
【问题讨论】:
-
在函数定义中使用'global a'语句?
-
@newtover:但是我无法访问本地
a的值以将其分配给全局值。 -
WHY???!!1!11one|11!1ELEVE|\|1!?。首先,使用全局变量是一种不好的做法,向您的函数添加参数或创建一个类。其次,为什么要在不同的上下文中使用相同的变量名并关联它们的内容。你能更努力地让你的代码变得更丑陋和混乱吗? -
这正是不鼓励使用全局变量的原因。即使有办法做到这一点,你也不应该这样做。更改局部变量名称,或者——更好的是——不要使用全局变量。
-
聚会有点晚了,但每当我遇到本地/全局冲突问题时,我都会使用一个空类作为命名空间容器(
class Container(): pass、settings = Container()、settings.a = 'foo')并存储我的全局变量在那里。它既可变又可区分:if var1 is None: var1 = settings.var1、else: settings.var1 = var1等等。