Python函数的参数及传递方式
Python函数的参数及传递方式是函数编程中非常重要的一部分,因为参数的传递方式不同会直接影响程序的性能。Python的参数传递方式主要有四种,分别是位置参数、默认参数、可变长参数和关键字参数。
位置参数
位置参数也就是普通参数,是指按照函数定义时参数的顺序来传递参数。例如下面的代码中函数test()的参数a和b就是位置参数。
#位置参数 def test(a,b): print(a,b) test(1,2) #1 2
默认参数
默认参数和位置参数一样,都是在调用函数时传递给函数的值。默认参数是指函数在定义时为某个参数赋予一个默认值,当调用函数时不用再传递该参数的值,如果传递了值,则使用传递的值。例如下面的代码中参数b就是一个默认参数,它的默认值为2,如果在调用函数时不传递b的值,则b的默认值为2。
#默认参数 def test(a,b=2): print(a,b) test(1) #1 2 test(1,3) #1 3
可变长参数
可变长参数是指在函数定义时可以接受任意数量的参数,也就是说在函数调用时,参数的数量是不确定的。Python的可变长参数有两种,一种是传递元组类型的可变长参数,另一种是传递字典类型的可变长参数。
1. 传递元组类型的可变长参数
在函数的参数列表中,以*开头的参数,表示传递的参数为可变长的元组类型。例如下面的代码中要实现函数test(),可以传入任意数量的参数,它的参数args为元组类型的可变长参数。
#传递元组类型的可变长参数
def test(*args):
for arg in args:
print(arg)
test(1,2,3)
#1
#2
#3
2. 传递字典类型的可变长参数
在函数的参数列表中,以**开头的参数,表示传递的参数为可变长的字典类型。例如下面的代码中要实现函数test(),可以传入任意数量的参数,它的参数kwargs为字典类型的可变长参数。
#传递字典类型的可变长参数
def test(**kwargs):
for key, value in kwargs.items():
print(key, ":", value)
test(name="张三", age=18, sex="男")
#name : 张三
#age : 18
#sex : 男
关键字参数
关键字参数是指函数调用时,使用参数名指定参数的值。例如下面的代码中函数test()的参数a和b就是关键字参数,调用函数时可以使用参数名指定参数的值。
#关键字参数 def test(a,b): print(a,b) test(b=2,a=1) #1 2
需要注意的是,在函数调用时,位置参数不能放在关键字参数之后。例如下面的代码中调用函数test()时,因为关键字参数b在位置参数2之前,所以会出错。
test(1,b=2,3) #错误
总结
Python函数的参数传递方式有四种,分别是位置参数、默认参数、可变长参数和关键字参数。位置参数和默认参数是函数调用时最常用的参数传递方式,通常用来传递固定的参数。可变长参数虽然不常用,但在某些场合下却很方便。而关键字参数则适用于那些参数数量多,但不确定是否全部需要传递的情况。程序员应该根据实际需求灵活选择参数传递方式。
