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

深入理解Python函数参数传递机制

发布时间:2023-10-01 09:59:47

Python中函数参数的传递机制是值传递。在函数调用时,实参的值会被复制到形参中,称为“传值调用”。

在Python中,函数参数可以分为可变参数和不可变参数。

不可变参数包括数字、字符串和元组,它们在传递过程中不会发生改变。

可变参数包括列表和字典,它们在传递过程中是可以被改变的。

对于不可变参数,传递的是对象的值的一个副本。如果在函数内部修改了该参数的值,实际上是创建了一个新的对象,并把新对象的引用赋给了函数内部的变量,而外部的变量仍然指向原有的对象。

对于可变参数,传递的是对象的引用。如果在函数内部修改了该参数的值,外部的变量也会受到影响。

下面通过几个例子来进一步理解函数参数的传递机制。

例1:

def change_int(a):
    a = 10

b = 20
change_int(b)
print(b)   # 输出结果为20

在这个例子中,变量b是一个不可变的参数,它的值是20。在函数change_int中,形参a被赋值为10,但这并不会影响外部的变量b,因为不可变参数的值是不会改变的。

例2:

def change_list(lst):
    lst[0] = 10

my_list = [1, 2, 3]
change_list(my_list)
print(my_list)   # 输出结果为[10, 2, 3]

在这个例子中,变量my_list是一个可变的参数,它是一个列表。在函数change_list中,形参lst引用了外部的列表my_list,并且修改了列表的 个元素的值。由于可变参数的传递是传递引用,所以外部的变量my_list也受到了影响。

例3:

def add_element(lst):
    lst.append(4)

my_list = [1, 2, 3]
add_element(my_list)
print(my_list)   # 输出结果为[1, 2, 3, 4]

在这个例子中,函数add_element向列表my_list中添加了一个新的元素。由于可变参数的传递是传递引用,所以外部的变量my_list也受到了影响。

通过上面的例子,可以看到Python函数的参数传递机制是值传递,但对于可变参数来说,传递的是引用。这就意味着,在函数内部对可变参数的修改会影响到外部的变量。而对于不可变参数来说,函数内部的修改只是针对局部变量,不会影响外部的变量。