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

  • Post category:Python

Python中的可变参数允许我们向函数中传递任意数量的位置参数或关键字参数。在函数的定义过程中,我们需要在形参前面加上一个 *** 分别表示可变长度的位置参数或可变长度的关键字参数。

下面是使用可变参数的完整攻略:

可变长度的位置参数

1. 定义函数时使用可变长度的位置参数

我们可以在函数定义的时候使用一个星号(*)来定义一个可变长度的位置形参。这个参数在函数内部是一个元组类型变量,包含了传入的所有位置参数。

def calc_sum(*args):
    res = 0
    for i in args:
        res += i
    return res

print(calc_sum(1, 2, 3, 4)) # 输出10

在上述代码中,calc_sum函数接受任意数量的位置参数。我们可以传入任意数量的参数,这些参数会被打包成一个元组args传入到函数中,并用for循环计算其总和。

2. 调用函数时使用可变长度的位置参数

我们可以使用一个星号(*)来将一个可迭代对象(如列表、元组等)中的所有元素解包成独立的位置参数,并传递给函数。

def calc_sum(x, y, z):
    return x + y + z

lst = [1, 2, 3]
print(calc_sum(*lst)) # 输出6

在上述代码中,我们将列表 lst 的元素解包成独立的位置参数,再传递给 calc_sum 函数进行计算。

可变长度的关键字参数

1. 定义函数时使用可变长度的关键字参数

我们可以在函数定义的时候使用两个星号(**)来定义一个可变长度的关键字形参。这个参数在函数内部是一个字典类型变量,包含了传入的所有关键字参数。

def say_hi(**kwargs):
    for k, v in kwargs.items():
        print(f'{k}:{v}')

say_hi(name='Tom', age=18) # 输出 name:Tom age:18

在上述代码中,say_hi 函数接受任意数量的关键字参数,我们可以传入任意数量的关键字参数,这些参数会被打包成一个字典 kwargs 传入到函数中,并用 for 循环输出每一个键值对。

2. 调用函数时使用可变长度的关键字参数

我们可以使用两个星号(**)将一个字典的所有键值对解包成独立的关键字参数,并传递给函数。

def say_hi(name, age, gender):
    print(f'我是{name},今年{age}岁,{gender}。')

dic = {'name': 'Tom', 'age': 18, 'gender': '男'}
say_hi(**dic)  # 输出 我是Tom,今年18岁,男。

在上述代码中,我们将字典 dic 解包成独立的关键字参数,并传递给 say_hi 函数进行调用。

以上就是 python 可变参数的使用攻略。