📅  最后修改于: 2023-12-03 15:34:13.938000             🧑  作者: Mango
在 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]
在上面的例子中,我们传递 lst
到 my_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_num
到 my_func()
,并在函数中修改了它。但是,由于 my_num
是一个不可变的整数,所以我们实际上传递的是其引用的一份副本,并且原始的 my_num
并没有被修改。
在 Python 中,所有变量都是对象的引用。因此,函数参数也是通过引用传递的。当传递可变对象时,函数修改参数会影响原始对象。而当传递不可变对象时,函数无法修改原始对象。