Python参数传递是传对象引用,不可变对象(如整数、字符串)在函数内修改不影响外部,可变对象(如列表、字典)内容可被修改,因共享引用;为避免修改,应传入副本(如copy或切片)。

在 Python 中,参数传递的方式取决于对象的类型,理解这一点对掌握函数行为很重要。Python 的参数传递既不是纯粹的“值传递”,也不是完全的“引用传递”,而是传递对象的引用(也叫“传对象引用”或“按共享传递”)。
1. 传递不可变对象(如整数、字符串、元组)
当传递不可变对象时,函数内部无法修改原始对象。看起来像“值传递”,因为修改局部变量不会影响外部变量。
示例:
def modify_num(x): x = 10 print("函数内:", x)num = 5modify_num(num)print("函数外:", num)
输出:
函数内: 10函数外: 5
说明:x 是对 num 所指向对象的引用,但整数不可变。x = 10 创建了一个新对象,不影响原来的 num。
2. 传递可变对象(如列表、字典)
当传递可变对象时,函数可以修改原对象的内容,因为它们共享同一个对象引用。
示例:
def modify_list(lst): lst.append(4) print("函数内:", lst)my_list = [1, 2, 3]modify_list(my_list)print("函数外:", my_list)
输出:
函数内: [1, 2, 3, 4]函数外: [1, 2, 3, 4]
说明:lst 和 my_list 指向同一个列表对象,append 操作修改了原对象。
3. 如何避免意外修改可变对象
如果你不希望函数修改原始数据,可以在传参时传入副本。
如知AI笔记
如知笔记——支持markdown的在线笔记,支持ai智能写作、AI搜索,支持DeepseekR1满血大模型
27 查看详情
立即学习“Python免费学习笔记(深入)”;
使用切片或 copy 方法创建副本:
modify_list(my_list.copy()) # 传副本modify_list(my_list[:]) # 列表切片也是副本
这样函数内的修改不会影响原始列表。
4. 关键点总结
Python 传递的是对象的引用,不是对象本身。不可变对象:函数内重新赋值不影响外部。可变对象:函数内修改内容会影响外部。想保护原始数据?传副本(copy 或切片)。
基本上就这些。关键是理解“引用”和“可变性”的关系。
以上就是python如何将值传递参数的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/610650.html
微信扫一扫
支付宝扫一扫