*kwargs的用途和用途是什么?

*kwargs的用途和用途是什么?

有什么用途**kwargs用Python?

我知道你可以objects.filter在一张桌子上**kwargs争论。

我也可以这样做来指定时间三角洲吗?timedelta(hours = time1)?

它到底是怎么工作的?是“拆包”类吗?喜欢a,b=1,2?


翻翻过去那场雪
浏览 641回答 3
3回答

米琪卡哇伊

你可以用**kwargs要让您的函数接受任意数量的关键字参数(“kwargs”意思是“关键字参数”):>>> def print_keyword_args(**kwargs):...     # kwargs is a dict of the keyword args passed to the function...     for key, value in kwargs.iteritems():...         print "%s = %s" % (key, value)... >>> print_keyword_args(first_name="John", last_name="Doe")first_name = Johnlast_name = Doe您还可以使用**kwargs通过构造关键字参数字典并将其传递给函数来调用函数时的语法:>>> kwargs = {'first_name': 'Bobby', 'last_name': 'Smith'}>>> print_keyword_args(**kwargs)first_name = Bobbylast_name = Smith这个Python教程包含了对它的工作原理的一个很好的解释,还有一些很好的例子。<--Update-->对于使用Python 3的人,使用Item()而不是iterItem()

慕妹3242003

kwargs只是一个字典,它被添加到参数中。字典可以包含键值对。那就是小矮人。好吧,就是这样。事情并不那么简单。例如,(非常假设的)您有一个接口,它只调用其他例程来完成任务:def myDo(what, where, why):    if what == 'swim':       doSwim(where, why)    elif what == 'walk':       doWalk(where, why)    ...现在,您得到了一种新的方法“驱动”:elif what == 'drive':    doDrive(where, why, vehicle)但是等一下,有一个新的参数“Vehicle”-你以前不知道。现在,您必须将它添加到mydo函数的签名中。在这里,你可以把kwargs扔进游戏中-你只需在签名中添加kwargs:def myDo(what, where, why, **kwargs):    if what == 'drive':       doDrive(where, why, **kwargs)    elif what == 'swim':       doSwim(where, why, **kwargs)这样,您不需要每次调用例程更改时都更改接口函数的签名。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python