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

Python参数传递的方式及应用

发布时间:2023-12-02 02:32:05

Python中函数参数传递的方式有两种,分别是值传递和引用传递。

1. 值传递:

值传递是指在函数调用时,将实参的值复制一份给形参,形参和实参相互独立,彼此之间的改变互不影响。例如:

def change_value(x):
    x = 100

a = 10
change_value(a)
print(a)  # 输出结果为10

在上述代码中,将变量a作为实参传递给函数change_value,在函数内部将其形参x赋值为100。但是在函数外部打印a的值,仍然是原来的10。这是因为在函数调用时,将a的值复制给x,虽然在函数内部改变了x的值,但是并没有影响到a

2. 引用传递:

引用传递是指在函数调用时,将实参的引用传递给形参,形参和实参指向同一块内存空间,彼此之间的改变会相互影响。例如:

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

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

在上述代码中,将列表nums作为实参传递给函数change_list,在函数内部修改了列表的值。由于列表是可变类型,传递的是引用,所以在函数外部打印nums的值时,发现列表的值已经改变了。

应用:

参数传递的方式对于函数的实际应用是十分重要的,可以根据不同的需求选择合适的方式。

- 值传递适用于那些不希望改变原始变量的情况。例如,计算一个数的平方,将结果返回给调用方:

def square(x):
    return x ** 2

num = 5
result = square(num)
print(result)  # 输出结果为25

在上述代码中,整数num作为实参传递给函数square,函数内部计算了平方并返回结果,在函数外部打印结果。

- 引用传递适用于那些希望改变原始变量的情况。例如,对列表进行排序,改变原始列表的顺序:

def sort_list(lst):
    lst.sort()

nums = [3, 1, 2]
sort_list(nums)
print(nums)  # 输出结果为[1, 2, 3]

在上述代码中,列表nums作为实参传递给函数sort_list,函数内部对列表进行排序。由于列表是可变类型,传递的是引用,所以在函数外部打印nums的值时,发现列表的顺序已经改变了。

综上所述,Python中参数传递的方式有值传递和引用传递,选择合适的方式取决于函数的具体需求。对于不希望改变原始变量的情况,可以选择值传递;而对于希望改变原始变量的情况,可以选择引用传递。