我想问一个关于*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
*args
是non-keyword参数。没有关键字的任何参数都将作为*arg
传递。正如Chris所指出的,kwargs
代表关键字参数。
位置参数进入args
(实际上是因为有单个*,而不是参数名称),而关键字参数进入了kwargs
(类似地是因为**)。