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 类似于口中的小明和小红
标签:111python,函数,args,参数,kwargs,bar,foo,不定 From: https://www.cnblogs.com/code3/p/17232957.html