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 的绑
订阅专栏 解锁全文
141



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



