python参数传递机制
Python参数传递机制(简洁笔记)
核心机制:对象引用传递
Python中所有参数传递都是对象引用的传递(即传递对象的地址),既不是值传递也不是引用传递。
关键特性:
-
不可变对象(int, str, tuple等)
- 函数内修改会创建新对象
- 原始对象不受影响
def modify(num): num += 10 # 创建新对象 n = 5 modify(n) print(n) # 输出: 5 (未改变) -
可变对象(list, dict, set等)
- 函数内修改直接影响原对象
def append_item(lst): lst.append(4) # 修改原对象 my_list = [1, 2, 3] append_item(my_list) print(my_list) # 输出: [1, 2, 3, 4] (已修改) -
重新赋值 vs 原地修改
=赋值:创建新引用- 方法调用:修改原对象
def reassign(lst): lst = [10, 20] # 新引用,不影响外部 def modify_inplace(lst): lst[0] = 99 # 原地修改 a = [1, 2] reassign(a) print(a) # 输出: [1, 2] modify_inplace(a) print(a) # 输出: [99, 2]
面试要点总结:
| 对象类型 | 函数内操作 | 外部影响 |
|---|---|---|
| 不可变 | 修改值 | ❌ 无影响 |
| 可变 | 原地修改(如append) | ✅ 受影响 |
| 可变 | 重新赋值(=) | ❌ 无影响 |
关键理解:Python传递的是对象的"地址副本",通过地址副本:
- 修改不可变对象 → 创建新地址
- 修改可变对象内容 → 原地址内容变化

浙公网安备 33010602011771号