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

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

Python 是否通过引用传递

在 Python 中,参数传递分为两种方式:值传递和引用传递。值传递是指将实参的值复制一份,然后传递给形参,函数内部针对形参的修改不会影响实参的值。而引用传递则是指将实参的内存地址传递给形参,函数内部对形参的修改会直接影响到实参的值。

那么在 Python 中,是通过值传递还是引用传递呢?答案是:引用传递

下面让我们来看两个例子。

例子 1:
def test1(a):
    print("a 的初始值为:", a)
    a = 10
    print("a 的修改后的值为:", a)
    
b = 5
test1(b)
print("经过函数调用,b 的值为:", b)

上述代码的执行结果如下:

a 的初始值为: 5
a 的修改后的值为: 10
经过函数调用,b 的值为: 5

从上面的例子可以看出,调用函数时,函数内部对参数的修改不会影响到实参的值,我们可以得出结论:Python 中的参数传递采用值传递。

例子 2:
def test2(lst):
    print("lst 的初始值为:", lst)
    lst.append(4)
    print("lst 的修改后的值为:", lst)

my_list = [1, 2, 3]
test2(my_list)
print("经过函数调用,my_list 的值为:", my_list)

上述代码的执行结果如下:

lst 的初始值为: [1, 2, 3]
lst 的修改后的值为: [1, 2, 3, 4]
经过函数调用,my_list 的值为: [1, 2, 3, 4]

从上面的例子可以看出,调用函数时,函数内部对参数的修改会直接影响到实参的值,我们可以得出结论:Python 中的参数传递采用引用传递。

综上所述,Python 是通过引用传递来传递参数的,但是对于不可变类型的参数,函数内部对其进行修改后,不会影响到实参的值。而对于可变类型的参数,则会直接影响到实参的值。