python 的 引用传递参数

python 的 引用传递参数

作者:William Gu发布时间:2026-03-28阅读时长:0 分钟阅读次数:3

用户关注问题

Q
Python 中参数传递方式是如何工作的?

我听说 Python 中的参数传递既不是传统的值传递也不是引用传递,这是什么意思?

A

理解 Python 的参数传递机制

Python 使用了一种称为“传对象引用”的机制。当你将参数传递给函数时,实际上是将对象的引用传递给函数,但这个引用本身是按值传递的。这意味着函数内对可变对象的修改会反映到外部,但重新赋值引用不会影响外部变量。

Q
在 Python 函数中修改可变参数会影响原始变量吗?

如果我传入一个列表到函数里,并修改这个列表,外部的列表会改变吗?

A

可变对象在函数中的修改表现

由于列表是可变对象,在函数中对列表进行修改(比如添加、删除元素)会直接影响到外部的原始列表变量。这是因为函数体内的参数引用指向了同一个列表对象。

Q
为什么在 Python 中对不可变参数赋值不会改变外部变量?

如果传入一个字符串或整数到函数里,并在函数内对其赋新值,为什么外部变量没有改变?

A

不可变对象的参数传递行为

不可变对象(如字符串、整数、元组等)在函数参数传递时,由于对象本身不能改变,任何对参数重新赋值操作都会创建一个新的对象并绑定到局部变量,原始外部变量保持不变。这样可以防止函数内的赋值操作影响到函数外部的变量。