gpt4 book ai didi

python - python 中令人困惑的 lambda 表达式

转载 作者:太空宇宙 更新时间:2023-11-03 18:24:36 25 4
gpt4 key购买 nike

我对这个衬垫有点困惑

tree = lambda: defaultdict(tree)

这怎么可能? (lambda 应该返回默认字典,但是我们如何将第一个 arg 作为树?)

最佳答案

Lambda 会延迟对其内容进行评估,直到被调用为止,因此当调用 tree() 并评估 defaultdict(tree) 时,tree > 将被很好地定义,因此不会引起任何问题。一个更明确的例子:

>>> foo = lambda: bar
>>> foo()
NameError: global name 'bar' is not defined
>>> bar = 5
>>> foo()
5

至于这个特定的 lambda 的作用:defaultdict 的第一个参数是缺少键时使用的工厂方法(有关详细信息,请参阅 documentation)。所以单行

tree = lambda: defaultdict(tree)

定义一个字典,默认情况下包含其他字典。 IE。一棵树。

例如:

my_tree = tree()

创建一棵新树,下面两行做同样的事情:

my_tree["foo"]
my_tree["foo"] = defaultdict(tree)

即创建一个名为“foo”的新子树。因此,可以将新元素添加到树的深处,而无需手动创建每个子树。例如:

root = tree()
root["foo"]["bar"]["baz"] = False

关于python - python 中令人困惑的 lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23456968/

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