如何在python中模拟引用传递



假设我们有一个函数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)

最新更新