**kwargs
在Python中有什么用途?
我知道你可以在桌子上做一个 objects.filter
并传入一个 **kwargs
参数。
我也可以这样做来指定时间增量,即 timedelta(hours = time1)
吗?
它究竟是如何工作的?它被归类为“拆包”吗?比如 a,b=1,2
?
原文由 Federer 发布,翻译遵循 CC BY-SA 4.0 许可协议
**kwargs
在Python中有什么用途?
我知道你可以在桌子上做一个 objects.filter
并传入一个 **kwargs
参数。
我也可以这样做来指定时间增量,即 timedelta(hours = time1)
吗?
它究竟是如何工作的?它被归类为“拆包”吗?比如 a,b=1,2
?
原文由 Federer 发布,翻译遵循 CC BY-SA 4.0 许可协议
**
字典。
这个
func(a=1, b=2, c=3)
是相同的
args = {'a': 1, 'b': 2, 'c':3}
func(**args)
如果您必须构造参数,这很有用:
args = {'name': person.name}
if hasattr(person, "address"):
args["address"] = person.address
func(**args) # either expanded to func(name=person.name) or
# func(name=person.name, address=person.address)
.items()
而不是 .iteritems()
用于 python 3 def setstyle(**styles):
for key, value in styles.iteritems(): # styles is a regular dictionary
setattr(someobject, key, value)
这使您可以像这样使用该功能:
setstyle(color="red", bold=False)
kwargs
是用于关键字参数的变量名,可以使用另一个变量名。重要的部分是它是一本字典,它是用双星号运算符 **
解压的。*
kwargs
和 args
,分别用于字典和其他可迭代对象。原文由 Georg Schölly 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答4.9k 阅读✓ 已解决
2 回答1k 阅读✓ 已解决
4 回答838 阅读✓ 已解决
3 回答1k 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
1 回答1.6k 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
您可以使用
**kwargs
让您的函数采用任意数量的关键字参数(“kwargs”表示“关键字参数”):您还可以在调用函数时使用
**kwargs
语法,方法是构造关键字参数字典并将其传递给函数:Python 教程 包含了一个很好的解释它是如何工作的,以及一些很好的例子。
Python 3 更新
对于 Python 3,而不是
iteritems()
,使用items()