首页 >后端开发 >Python教程 >Python 函数参数中的'*args”和'kwargs”有什么区别?

Python 函数参数中的'*args”和'kwargs”有什么区别?

Barbara Streisand
Barbara Streisand原创
2024-12-29 03:18:18144浏览

What's the Difference Between `*args` and `kwargs` in Python Function Parameters?

揭秘函数参数中(双星)和(星)的意义*

Python 中,函数由 args 和 *kwargs 表示的参数作为通用机制来适应任意

使用 *args 解包位置参数

*args 参数将所有超过预定义位置参数的位置参数收集到一个元组中。例如:

def foo(*args):
    for arg in args:
        print(arg)

此函数可以接受任意数量的位置参数,例如:

foo(1)  # Output: 1
foo(1, 2, 3)  # Output: 1 2 3

使用 kwargs**

另一方面,**kwargs 将所有关键字参数收集到一个字典。

def bar(**kwargs):
    for key, value in kwargs.items():
        print(key, value)
使用关键字参数调用此函数会产生:

bar(name='John', age=30)  # Output: name John, age 30

args 和 kwargs*这两个习语可以组合起来以允许固定和可变的混合参数:

可以按如下方式调用此函数:
def foo(kind, *args, bar=None, **kwargs):
    print(kind, args, bar, kwargs)

foo(123, 'a', 'b', apple='red')  # Output: 123 ('a', 'b') None {'apple': 'red'}
其他用例

    拆包参数列表:
  • * 习惯用法可用于在调用时解压参数列表函数:
def foo(bar, lee):
    print(bar, lee)

baz = [1, 2]
foo(*baz)  # Output: 1 2
    扩展可迭代解包 (Python 3 ):
  • * 可以用在赋值的左侧来获取列表:
first, *rest = [1, 2, 3, 4]
# first = 1
# rest = [2, 3, 4]
    仅限关键字参数 (Python 3 ):
  • 函数可以使用以下语法限制关键字参数:
此函数需要三个位置参数以及 *.
def func(arg1, arg2, arg3, *, kwarg1, kwarg2):
    pass
之后的任意数量的关键字参数

以上是Python 函数参数中的'*args”和'kwargs”有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn