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

Python函数参数的传递及默认值的定义

发布时间:2023-06-13 13:14:02

在Python中,函数参数的传递方式有两种,分别为位置参数和关键字参数。在定义函数时,可以设置函数参数的默认值,也可以使用可变长度参数来传递参数。

一、位置参数

位置参数是指按照参数所在位置进行传递的参数。在函数调用时,参数依次按照函数定义中的顺序进行传递。例如:

def func(a, b, c):
    print(a, b, c)

func(1, 2, 3)   # 输出:1 2 3

在上述代码中,调用函数func()时使用了位置参数,它们的顺序与函数定义时的顺序一致,分别为123

二、关键字参数

关键字参数是指通过指定参数名来传递的参数。在函数调用时,可以使用参数名=值的方式来指定参数的值。例如:

def func(a, b, c):
    print(a, b, c)

func(b=2, a=1, c=3)     # 输出:1 2 3

在上述代码中,调用函数func()时使用了关键字参数,可以看到参数的顺序与函数定义时不一致,但是由于使用了关键字参数,因此程序可以正确地输出1 2 3

三、参数默认值

在定义函数时,可以设置函数参数的默认值。当调用函数时没有给出对应的参数值时,将使用参数的默认值。例如:

def func(a, b=2, c=3):
    print(a, b, c)

func(1)     # 输出:1 2 3

在上述代码中,定义了一个名为func()的函数,其中参数bc都有默认值。当调用函数func(1)时,由于没有给bc赋值,因此将使用它们的默认值,输出结果为1 2 3

需要注意的是,在定义函数时,必须将默认参数放在位置参数后面,否则会引发语法错误。例如:

def func(a=1, b, c):
    print(a, b, c) 

# SyntaxError: non-default argument follows default argument

四、可变长度参数

如果一个函数需要接收可变数量的参数,可以使用可变长度参数。Python中有两种可变长度参数,分别为*args**kwargs

1、*args

*args表示接收任意数量的非关键字参数。在函数定义时,将*args放在任意位置参数的后面。例如:

def func(a, b, *args):
    print(a, b, args)

func(1, 2, 3, 4, 5)     # 输出:1 2 (3, 4, 5)

在上述代码中,函数func()有三个参数,其中第三个参数*args表示可以接收任意数量的非关键字参数。在调用函数func(1, 2, 3, 4, 5)时,实参345会被打包成一个元组(3, 4, 5),传递给参数*args

2、**kwargs

**kwargs表示接收任意数量的关键字参数。在函数定义时,将**kwargs放在任意关键字参数的后面。例如:

def func(a, b, **kwargs):
    print(a, b, kwargs)

func(1, 2, c=3, d=4, e=5)   # 输出:1 2 {'c': 3, 'd': 4, 'e': 5}

在上述代码中,函数func()有三个参数,其中第三个参数**kwargs表示可以接收任意数量的关键字参数。在调用函数func(1, 2, c=3, d=4, e=5)时,实参c=3d=4e=5会被打包成一个字典{'c': 3, 'd': 4, 'e': 5},传递给参数**kwargs

需要注意的是,*args**kwargs只能出现在参数列表的最后面。

总结

Python中的函数参数传递方式有两种:位置参数和关键字参数。同时,在定义函数时可以设置参数的默认值,使用*args**kwargs可接收任意数量的非关键字和关键字参数。在实际开发中,针对不同的需求,可以灵活使用不同的参数传递方式和参数类型。