所以我在Kotti中找到了这段代码:
[child] = filter(lambda ch: ch.name == path[0], self._children)
我想知道:左边的方括号有什么作用?我在 python shell 中做了一些测试,但我不太清楚它的目的。额外的问题:lambda
回报是什么?我猜是 的一个元组(Boolean, self._children)
,但这可能是错误的......
这是列表解包,只有一个元素的列表。等效的将是:
child = filter(lambda ch: ch.name == path[0], self._children)[0]
(例外情况是,如果多个元素self._children
满足条件——在这种情况下,Kotti 的代码会抛出一个错误(太多的值无法解包),而上面的代码将使用列表中的第一个)。
另外:lambda ch: ch.name == path[0]
返回True
或False
。
[child] = filter(lambda ch: ch.name == path[0], self._children)
这会将 child 设置为 result 的第一个元素。它是 list[0] = ...[0] 的语法糖。它也可以是两个元素,比如[a, b] = [10, 20]
,它是糖a = 10; b = 20
另外,右边的元素数量应该和左边一样,否则会抛出异常