假设我们有一个函数foo()
def foo():
foo.a = 2
foo.a = 1
foo()
>> foo.a
>> 2
这是python还是我应该包装变量在可变对象,如列表?
,
a = [1]
def foo(a):
a[0] = 2
foo()
>> a
>> 2
既然您"想要改变变量,以便更改在全局范围内也受到影响",请使用global
关键字告诉您的函数名称a
是一个全局变量。这意味着对函数内a
的任何赋值都会影响全局作用域。如果没有global
声明,在函数中将a
赋值为一个新的局部变量。
>>> a = 0
>>> def foo():
... global a
... a = 1
...
>>> foo()
>>> a
1
使用一个类(可能有点夸张):
class Foo:
def __init__(self):
self.a = 0
def bar(f):
f.a = 2
foo = Foo()
foo.a = 1
bar(foo)
print(foo.a)