Python中函数的参数传递与可变长参数是编写Python程序时经常用到的知识点,下面将详细讲解。
函数参数的传递方式
Python函数中有两种参数的传递方式,一种是值传递,另一种是引用传递。在函数调用时,如果传递的是可变类型的参数,函数内部对这些参数的操作将影响到原始参数的值。
值传递
Python中的值传递指的是将参数的值复制到函数栈中,这样在函数内部改变参数的值不会影响原始值。例如:
def change_num(num):
num += 1
print("函数内部num的值为:", num)
x = 10
change_num(x)
print("函数外部num的值为:", x)
输出结果:
函数内部num的值为: 11
函数外部num的值为: 10
可以看到,尽管函数内部改变了num的值,但是函数外部的x的值并没有受到影响。
引用传递
Python中的引用传递指的是将参数的引用(内存地址)传递到函数栈中,这样在函数内部对参数的修改将会影响到原始参数的值。例如:
def change_list(mylist):
mylist.append(3)
print("函数内部的mylist为:", mylist)
lst = [1, 2]
change_list(lst)
print("函数外部的lst为:", lst)
输出结果:
函数内部的mylist为: [1, 2, 3]
函数外部的lst为: [1, 2, 3]
可以看到,尽管函数内部对mylist进行了修改,但是函数外部的lst也受到了影响。
可变长参数
可变长参数指的是在函数调用时可以传入任意个数的参数,这些参数在函数内部会被打包成一个元组(tuple)或字典(dict)。Python中有两种可变长参数的方式:*args
和**kwargs
。
*args
*args
用来接收任意数量的非关键字参数,这些参数将被打包成一个元组(tuple)。例如:
def add_nums(*args):
sum = 0
for num in args:
sum += num
return sum
x = add_nums(1, 2, 3, 4)
print(x)
输出结果:
10
**kwargs
**kwargs
用来接收任意数量的关键字参数,这些参数将被打包成一个字典(dict)。例如:
def show_kwargs(**kwargs):
for key, value in kwargs.items():
print(key, ":", value)
show_kwargs(name="Alice", age=20, gender="female")
输出结果:
name : Alice
age : 20
gender : female
总结
Python函数中的参数传递方式有值传递和引用传递两种,可变长参数指的是可以接收任意数量的非关键字参数和关键字参数,使用*args
和**kwargs
分别实现。在使用可变长参数时,需要注意参数的顺序和类型。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python中函数的参数传递与可变长参数介绍 - Python技术站