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

Python中函数的参数传递

发布时间:2023-07-01 22:59:35

在Python中,函数的参数传递有两种方式:传值和传引用。

首先,传值方式是指将实际参数的值复制一份给形式参数,函数内部对形式参数的修改不会影响到实际参数。这是因为在函数调用时,会创建新的内存空间用于存放形式参数的值。例如:

def change_num(num):
    num = num + 1

x = 10
change_num(x)
print(x)  # 输出10

在这个例子中,实际参数x的值是10,当将其作为参数传递给函数change_num时,函数将会创建一个新的内存空间用于存放形式参数num的值,并把实际参数x的值复制给num。然后在函数内部对num的值进行修改,但不会对实际参数x的值产生影响。所以输出结果还是10。

其次,传引用方式是指将实际参数的引用传递给形式参数,函数内部对形式参数的修改会直接影响到实际参数。这是因为在函数调用时,不会创建新的内存空间,而是直接使用实际参数的内存地址。例如:

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

my_list = [1, 2, 3]
change_list(my_list)
print(my_list)  # 输出[1, 2, 3, 4]

在这个例子中,实际参数my_list是一个列表,当将其作为参数传递给函数change_list时,函数内部使用的是my_list的内存地址。所以在函数内部对形式参数lst进行修改,实际上是在修改实际参数my_list所指向的内存空间。所以输出结果是[1, 2, 3, 4]。

需要注意的是,在Python中,传递给函数的参数都是对象的引用。当参数是不可变对象(如整数、字符串、元组)时,传值方式和传引用方式的效果是一样的,因为不可变对象的值是不能修改的。但当参数是可变对象(如列表、字典)时,传引用方式可以直接修改对象的值,而传值方式只是修改了形式参数的指向,并不会修改实际参数的值。

综上所述,函数的参数传递方式分为传值和传引用两种,传值方式会复制实际参数的值给形式参数,形式参数的修改不会影响实际参数;传引用方式会传递实际参数的引用给形式参数,形式参数的修改会直接影响实际参数。具体选择何种方式取决于实际需求。