温馨提示×

python值传递和引用传递有什么不同

小亿
133
2023-09-22 19:36:45
栏目: 编程语言

在Python中,变量的传递方式既不是纯粹的值传递,也不是纯粹的引用传递,而是一种称为"对象的引用传递"的方式。

值传递是指在函数调用时,将实际参数的值复制给形式参数,函数中对形式参数的修改不会影响实际参数的值。而引用传递是指在函数调用时,将实际参数的引用(内存地址)传递给形式参数,函数中对形式参数的修改会影响实际参数的值。

在Python中,当一个变量被作为参数传递给函数时,实际上是将该变量的引用(内存地址)传递给函数。如果在函数中修改了形式参数的值,会影响原始变量的值,这类似于引用传递的行为。但是,如果在函数中给形式参数重新赋值,即让形式参数指向一个新的对象,原始变量的值不会受到影响,这类似于值传递的行为。

下面通过例子来说明:

def foo(x):
x = 10
print('x in foo:', x)
a = 5
foo(a)
print('a after foo:', a)

输出结果为:

x in foo: 10
a after foo: 5

在函数内部,x = 10是给形式参数重新赋值,这时形式参数x指向了一个新的对象10,原始变量a的值不会受到影响。所以,可以说Python是使用对象的引用传递来传递参数。

0