📜  python 通过引用传递 - Python (1)

📅  最后修改于: 2023-12-03 15:34:13.938000             🧑  作者: Mango

Python 通过引用传递

在 Python 中,所有变量都是对象的引用,包括基本数据类型和对象类型。因此,在 Python 中,函数参数也是通过引用传递的。

传递对象引用

当我们将对象传递给函数时,实际上传递的是该对象的引用,而不是对象本身。因此,当函数修改参数时,原始对象也会受到影响。

def my_func(my_list):
    my_list.append(4)
    return my_list

lst = [1, 2, 3]
lst_modify = my_func(lst)
print(lst_modify)  # [1, 2, 3, 4]
print(lst)  # [1, 2, 3, 4]

在上面的例子中,我们传递 lstmy_func(),并在函数中修改了它,在返回之后,lst 也被修改了。

不可变对象

对于不可变对象如整数,字符串等,我们无法修改其内容,只能修改其引用。当我们将不可变对象传递给函数时,实际上传递的是其引用的一份副本,因为我们不能修改其内容。

def my_func(my_int):
    my_int += 1
    return my_int

my_num = 3
num_modify = my_func(my_num)
print(num_modify)  # 4
print(my_num)  # 3

在上面的例子中,我们传递 my_nummy_func(),并在函数中修改了它。但是,由于 my_num 是一个不可变的整数,所以我们实际上传递的是其引用的一份副本,并且原始的 my_num 并没有被修改。

总结

在 Python 中,所有变量都是对象的引用。因此,函数参数也是通过引用传递的。当传递可变对象时,函数修改参数会影响原始对象。而当传递不可变对象时,函数无法修改原始对象。