python 函数参数引用传递
时间: 2024-06-27 22:01:09 浏览: 183
在 Python 中,函数参数有两种传递方式:值传递(pass by value)和引用传递(pass by reference)。在大多数情况下,Python 实际上是通过引用传递参数的,因为 Python 是一种动态类型语言,变量名只是指向对象的引用。
**值传递(call-by-value):**
在其他一些语言中(如 C/C++),如果函数接受的是基本数据类型(如 int、float 等),则是按值传递的。这意味着,当你在函数内部修改这样的参数,原始值不会改变,因为它创建了一个新的副本。在 Python 中,对于不可变类型(如整数、浮点数、字符串等),行为类似值传递,因为它们是不可变的。
**引用传递(call-by-reference):**
然而,对于可变类型(如列表、字典、集合等),Python 实际上是按照引用传递的。当你把一个可变对象作为参数传入函数,函数会接收这个对象的引用,而不是复制。因此,函数内部对对象的操作会影响到原始对象,因为你改变了引用所指向的内容。
例如:
```python
def change_list(l):
l.append(42)
my_list = [1, 2, 3]
change_list(my_list)
print(my_list) # 输出: [1, 2, 3, 42]
```
在这个例子中,`change_list`函数改变了 `my_list` 的内容,因为它是通过引用传递的。
**相关问题--:**
1. Python 中如何区分值传递和引用传递?
2. 对于不可变类型,Python 是否也是按引用传递?
3. 在 Python 中,如何避免意外地修改传入的可变对象?
阅读全文