5

所以我在Kotti中找到了这段代码:

[child] = filter(lambda ch: ch.name == path[0], self._children)

我想知道:左边的方括号有什么作用?我在 python shell 中做了一些测试,但我不太清楚它的目的。额外的问题:lambda回报是什么?我猜是 的一个元组(Boolean, self._children),但这可能是错误的......

4

2 回答 2

10

这是列表解包,只有一个元素的列表。等效的将是:

child = filter(lambda ch: ch.name == path[0], self._children)[0]

(例外情况是,如果多个元素self._children满足条件——在这种情况下,Kotti 的代码会抛出一个错误(太多的值无法解包),而上面的代码将使用列表中的第一个)。

另外:lambda ch: ch.name == path[0]返回TrueFalse

于 2012-07-14T21:09:36.050 回答
2
[child] = filter(lambda ch: ch.name == path[0], self._children)

这会将 child 设置为 result 的第一个元素。它是 list[0] = ...[0] 的语法糖。它也可以是两个元素,比如[a, b] = [10, 20],它是糖a = 10; b = 20

另外,右边的元素数量应该和左边一样,否则会抛出异常

于 2012-07-14T21:12:32.667 回答