Python参数传递本质是对象引用传递:不可变对象(如数字、字符串)在函数内修改会绑定新对象,原变量不变;可变对象(如列表、字典)调用就地方法会改变原对象;可通过浅拷贝、深拷贝或返回新对象避免意外修改。

Python 中传递参数值主要靠“对象引用传递”,但实际效果常被理解为“按对象传值”——关键看对象是否可变。
不可变对象:看起来像“传值”
数字、字符串、元组等不可变对象,函数内修改会创建新对象,原变量不受影响:
-
例子:
def add_one(x): x += 1; print(x);调用num = 5; add_one(num)输出 6,但num仍是 5 - 本质是
x += 1重新绑定了局部变量x到新整数对象,没改原对象
可变对象:修改会影响原对象
列表、字典、集合等可变对象,函数内直接调用方法(如 .append()、.update())会改变原对象:
-
例子:
def append_item(lst): lst.append('new');调用my_list = [1]; append_item(my_list)后my_list变成[1, 'new']</li> <li>因为 <code>lst
登录后复制
和my_list指向同一个列表对象,操作的是它本身
想避免意外修改?主动复制
若不希望函数改动原始可变对象,传入前手动拷贝:
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~