111python之不定长参数

Python中的不定长传参指的是函数参数的个数不是固定的,这使得函数可以接受任意数量的参数。有两种方法来实现不定长传参:使用*args和**kwargs参数。

  • *args:用于传递任意数量的位置参数,它会将所有传递进来的位置参数存储为一个元组(tuple)。
  • **kwargs:用于传递任意数量的关键字参数,它会将所有传递进来的关键字参数存储为一个字典(dict)。

下面是一个示例代码,其中函数foo()使用了*args**kwargs来实现不定长传参:

def foo(*args, **kwargs):
    print("Positional arguments:")
    for arg in args:
        print(arg)
    
    print("\nKeyword arguments:")
    for key, value in kwargs.items():
        print(key + ": " + str(value))

在这个示例中,函数foo()接受不定数量的位置参数和关键字参数,并打印它们。调用foo()时,可以传递任意数量的参数,如下所示:

foo(1, 2, 3, name="Alice", age=25)

这将打印以下内容:

Positional arguments:
1
2
3

Keyword arguments:
name: Alice
age: 25

在这个示例中,函数foo()将1、2和3存储在args元组中,将name和age存储在kwargs字典中。它然后打印出args中的所有元素以及kwargs中的所有键值对。

需要注意的是,在函数定义中,*args必须出现在**kwargs之前,因为位置参数必须先与关键字参数被解析。

此外,可以使用一个星号(*)或两个星号(**)来展开元组或字典,以便将其传递给另一个函数。例如:

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

args = (1, 2, 3)
bar(*args)  # 等价于 bar(1, 2, 3)

kwargs = {"a": 1, "b": 2, "c": 3}
bar(**kwargs)  # 等价于 bar(a=1, b=2, c=3)

在这个示例中,我们首先定义了一个函数bar(),它接受三个位置参数。然后我们定义了一个args元组和一个kwargs字典,并将它们分别传递给bar()函数。使用一个星号(*)展开args元组,将其作为三个单独的位置参数传递给bar()。使用两个星号(**)展开kwargs字典,将其作为三个关键字参数传递给bar()。

总之,不定长传参可以让函数在接受参数时更加灵活,方便编写可重用性高的函数。

注:foo bar 类似于口中的小明和小红

posted @ 2023-03-19 13:48  __username  阅读(295)  评论(0编辑  收藏  举报

本文作者:DIVMonster

本文链接:https://www.cnblogs.com/guangzan/p/12886111.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。