假设我们有一个函数foo()
def foo():
foo.a = 2
foo.a = 1
foo()
>> foo.a
>> 2
这是pythonic还是应该将变量包装在可变对象中,例如列表?
例如:
a = [1]
def foo(a):
a[0] = 2
foo()
>> a
>> 2
答案 0 :(得分:1)
由于您“想要改变变量以便在全局范围内实现更改”,请使用global
关键字告诉您的函数名称a
是全局变量。这意味着对函数内a
的任何赋值都会影响全局范围。如果您的函数中没有global
声明赋值给a
,则会创建一个新的局部变量。
>>> a = 0
>>> def foo():
... global a
... a = 1
...
>>> foo()
>>> a
1
答案 1 :(得分:0)
使用课程(可能有点矫枉过正):
class Foo:
def __init__(self):
self.a = 0
def bar(f):
f.a = 2
foo = Foo()
foo.a = 1
bar(foo)
print(foo.a)