欢迎访问宙启技术站
智能推送

Python函数传值和传址的区别

发布时间:2023-06-16 07:13:14

Python 中的变量可以存储各种不同类型的数据,可以是数字、字符串、列表、元组、字典等数据类型。在 Python 中,传参方式有两种,一种是传值,另一种是传址。这两种方式在使用过程中有着非常重要的作用,下面我们来看一下它们的区别。

1、传值

传值就是将函数外部的变量的值传递给函数内部的一个变量,然后在函数内部进行操作,并将结果返回给函数外部。在函数内部修改这个变量的值不会影响函数外部变量的值。这种方式在 Python 中传递的是原始值,而不是传递的对象或数据的引用。因此,在函数内部修改参数的值,不会影响原始值。

下面是一个简单的示例:

def change_int(a):
    a = a + 1
    return a

b = 2
c = change_int(b)

print(b)  # 输出 2
print(c)  # 输出 3

上面的代码中,change_int 函数是传值方式,传递一个变量 a,然后在函数内部对变量进行修改,并将修改后的值返回。在函数内部修改的只是变量 a 中存储的值,而不会对函数外部的变量 b 产生任何影响。

2、传址

传址方式就是将函数外部变量的地址传递给函数内部,这样,在函数内部就可以直接访问原始的变量,如果在函数内部修改了变量的值,也会直接影响到原始的变量。在 Python 中,传址方式是默认的传递方式,所以如果你不知道这两种传递方式的区别,直接将变量传递到函数中进行操作也不会出现任何问题。

下面是一个示例:

def change_num(nums):
    nums[0] = 100

nums = [1, 2, 3]
change_num(nums)
print(nums)  # 输出 [100, 2, 3]

上面的代码中,change_num 函数是传址方式,传递的是列表 nums,在函数内部修改列表的第一个元素的值为 100,这样修改之后,原始列表的值也随之发生了变化。

总体来说,Python 中的传值和传址方式是十分有用和重要的。传值方式可以在函数中使用变量而不会影响原始值,传址方式可以在函数中直接修改变量的值并影响到原始变量。因此,在实际的开发中,需要灵活运用二者,根据需求来选择合适的方式来传递参数。