fat*_*oku 5 python function call namedtuple
在Python中,如果你有一本字典
d = {'foo': 1, 'bar': False}
Run Code Online (Sandbox Code Playgroud)
您可以将此应用于接受foo和bar关键字参数的函数
def func(foo, bar):
# Do something complicated here
pass
func(**d)
Run Code Online (Sandbox Code Playgroud)
但如果相反,我想调用func下面定义的namedtuple:
from collections import namedtuple
Record = namedtuple('Record', 'foo bar')
r = Record(foo=1, bar=False)
func(r) # !!! this will not work
Run Code Online (Sandbox Code Playgroud)
这是什么语法?
Mar*_*ers 11
namedtuple实例有一个._asdict()方法:
func(**r._asdict())
Run Code Online (Sandbox Code Playgroud)
但是如果namedtuple属性与函数的参数的顺序相同,则可以将其作为序列应用:
func(*r)
Run Code Online (Sandbox Code Playgroud)
这里,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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2207 次 |
| 最近记录: |