39、Python函数参数传递机制详解

Python函数参数传递机制详解

1. Python参数传递基础

1.1 参数传递模式

Python的参数传递方案与C++的引用参数选项并不完全相同,但在实践中,它与C语言的参数传递模型非常相似:
- 不可变参数按值传递 :像整数和字符串这样的对象是通过对象引用传递的,而不是通过复制。但由于无法对不可变对象进行原地修改,其效果类似于复制。
- 可变参数按指针传递 :列表和字典等对象同样通过对象引用传递,这类似于C语言将数组作为指针传递的方式。可变对象可以在函数中进行原地修改,就像C数组一样。

1.2 参数与共享引用示例

以下代码展示了参数传递的特性:

def changer(a, b):
    a = 2
    b[0] = 'spam'

X = 1
L = [1, 2]
changer(X, L)
print(X, L)  # 输出: (1, ['spam', 2])

在这个代码中, changer 函数对参数 a 赋值,并修改了参数 b 所引用对象的一个元素。这两个赋值操作在语法上只有细微差别,但结果却截然不同:
- 由于 a 是函数作用域内的局部名称,第一个赋值操作对调用者没有影响,它只是改变了局部变量 a ,而没有改变调用者中名称 X 的绑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值