gpt4 book ai didi

python - 如何将 namedtuple 应用于函数?

转载 作者:太空狗 更新时间:2023-10-30 00:36:18 28 4
gpt4 key购买 nike

在 Python 中,如果你有一本字典

d = {'foo': 1, 'bar': False}

您可以将此应用到接受 foobar 关键字参数的函数上

def func(foo, bar):
# Do something complicated here
pass

func(**d)

但如果相反,我想用下面定义的 namedtuple 调用 func:

from collections import namedtuple
Record = namedtuple('Record', 'foo bar')
r = Record(foo=1, bar=False)
func(r) # !!! this will not work

这个的语法是什么?

最佳答案

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

关于python - 如何将 namedtuple 应用于函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19707267/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com