Python分隔* args和** kwargs

问题描述 投票:0回答:1

我想问一个关于*args**kwargs的问题。

我一直在独立研究Python并研究上述两个关键字。

[我知道*args涉及将额外的参数放入元组,而**kwargs放入字典中。

我也知道*args在Python语法中定义的**kwargs之前。

请考虑以下代码:

site_title = "My Blog"

def blog_posts(title, *args, **kwargs):
    print(title)
    for arg in args:
        print(arg)
    for p_title, post in kwargs.items():
        print(p_title, post)

blog_posts(site_title,
       '1', '2', '3',
       blog_1 = "I am so awesome.",
       blog_2 = 'Cars are cool.',
       blog_3 = 'Aww look at my cat!')

[我不理解的是Python语法如何将'1', '2', '3'blog_1 = ... 'look at my cat!'分别分为*args**kwargs

[当我阅读代码时,我认为site_title之后的所有参数都将被接受到*args参数中,因此**kwargs将为空。

Python如何知道哪些参数属于*args**kwargs

python function args kwargs
1个回答
0
投票

*argsnon-keyword参数。没有关键字的任何参数都将作为*arg传递。正如Chris所指出的,kwargs代表关键字参数

位置参数进入args(实际上是因为有单个*,而不是参数名称),而关键字参数进入了kwargs(类似地是因为**)。

© www.soinside.com 2019 - 2024. All rights reserved.