在Python中,如果你有一本字典如何将一个namedtuple应用于函数?
d = {'foo': 1, 'bar': False}
您可以将此到由
def func(foo, bar):
# Do something complicated here
pass
func(**d)
接受foo
和bar
关键字参数但是如果相反,我想叫func
与功能名称如下定义:
这是什么语法?
在Python中,如果你有一本字典如何将一个namedtuple应用于函数?
d = {'foo': 1, 'bar': False}
您可以将此到由
def func(foo, bar):
# Do something complicated here
pass
func(**d)
接受foo
和bar
关键字参数但是如果相反,我想叫func
与功能名称如下定义:
这是什么语法?
一个namedtuple实例有一个._asdict()
method:
func(**r._asdict())
但如果namedtuple属性是相同的顺序作为函数的参数,你可以只适用于它作为一个序列,而不是:
func(*r)
这里,namedtuple的两个值按顺序应用于函数中的关键字参数。毕竟,这两个论点可以作为立场论点来解决!
为您的样品的功能,无论工作:
>>> def func(foo, bar):
... print foo, bar
...
>>> from collections import namedtuple
>>> Record = namedtuple('Record', 'foo bar')
>>> r = Record(foo=1, bar=False)
>>> func(**r._asdict())
1 False
>>> func(*r)
1 False
您可能希望包含的参数数量也应该相同。 – thefourtheye
@thefourtheye:这也适用于字典应用为关键字参数的情况;这对namedtuples并不特别。 –
是的。你是对的。 – thefourtheye
您的意思是'FUNC(* R)'在最后的代码块? – mr2ert
您是否尝试过使用'func(* d)'?也就是说,试图用它作为可变参数而不是字典? – wheaties
mr2ert,写这个答案,我会接受它。一个小实验表明它们确实通过关键字匹配。 – fatuhoku