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中参数传递的方式有值传递和引用传递,选择合适的方式取决于函数的具体需求。对于不希望改变原始变量的情况,可以选择值传递;而对于希望改变原始变量的情况,可以选择引用传递。
