Python 函数参数传递与匹配模式详解
1. 可变参数的传递与修改
在 Python 中,参数是通过赋值来传递的。这意味着函数中的参数名可能会与调用作用域中的变量共享对象。因此,在函数中对可变参数进行原地修改可能会影响到调用者。
例如,当函数首次被调用时,函数中的 a 和 b 最初引用的是变量 X 和 L 所引用的对象。通过变量 b 更改列表后,在函数调用返回后, L 会看起来有所不同。
# 假设存在 changer 函数
def changer(a, b):
# 这里对 b 进行修改可能影响外部的 L
b[0] = 'spam'
X = 1
L = [1, 2]
changer(X, L)
print(L) # 输出可能会改变
避免可变参数的修改
这种对可变参数进行原地修改的行为并不是一个错误,它只是 Python 中参数传递的工作方式,并且在实践中非常有用。通常,参数是通过引用传递给函数的,这意味着我们可以在程序中传递大型对象而无需沿途进行多次复制,并且可以轻松地更新这些对象。
如果我们不希望函数内的原地修改影响到传递给它们的对象,可以显式地复制可变对象。以下是几种复制的方法:
- 在调用点复制列表:
L = [1, 2]
changer(X,
超级会员免费看
订阅专栏 解锁全文
1397

被折叠的 条评论
为什么被折叠?



