python函数的可变参数是什么,如何使用?

  • Post category:Python

Python函数的可变参数指的是在函数定义时,可以使用args或*kwargs来接收任意数量、任意类型的参数。下面就详细讲解可变参数的使用方法:

可变参数的定义和使用

使用*args接收不定数量的位置参数

def func(*args):
    print(args)

func()        # 输出 ()
func(1)       # 输出 (1,)
func('hello', 2, [3, 4]) # 输出 ('hello', 2, [3, 4])

上面的代码中,定义了一个名为func的函数,用*args来接收任意数量的位置参数。当没有参数时,函数调用时输出空元组();当传递一个参数时,输出包含该参数的元组;当传递多个参数时,以元组的形式输出所有参数。

使用**kwargs接收关键字参数

def func(**kwargs):
    print(kwargs)

func()              # 输出 {}
func(name='Tom')    # 输出 {'name': 'Tom'}
func(city='New York', age=25)  # 输出 {'city': 'New York', 'age': 25}

上面的代码中,使用**kwargs来以字典的形式接收任意数量的关键字参数。当没有参数时,函数调用时输出空字典{};当传递一个关键字参数时,输出包含该参数的字典;当传递多个参数时,以字典的形式输出所有参数。

同时使用args和*kwargs

def func(*args, **kwargs):
    print(args, kwargs)

func(1, 2, 'hello', name='Tom', age=25)    # 输出 (1, 2, 'hello') {'name': 'Tom', 'age': 25}

上面的代码中,使用args和*kwargs同时接收不定数量的位置参数和关键字参数。以元组和字典的形式打印输出所有参数。

传递可变参数

def func(name, *args, **kwargs):
    print(name, args, kwargs)

func('Tom', 1, 2, age=25, city='New York')   # 输出 Tom (1, 2) {'age': 25, 'city': 'New York'}

上面的代码中,函数定义中name为必须的参数,后面使用args和*kwargs来接收任意数量的位置参数和关键字参数。在调用函数时,第一个参数传递必须参数,后面参数可以传递位置参数和关键字参数。

综上所述,可变参数是使用args和kwargs来接收任意数量、任意类型的参数,而且可以同时使用二者。在使用可变参数时,需要注意参数的顺序,必须将args放在**kwargs的前面,否则会报错。另外,通过传递可变参数,可以方便的将一个函数封装成一个通用的多功能函数,便于在各种场景下调用使用。