63、Python 函数参数传递与匹配模式详解

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, 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值