所以我在Kotti内找到了这段代码:
[child] = filter(lambda ch: ch.name == path[0], self._children)
我想知道:左手方括号有什么作用?我在python shell中做了一些测试,但我无法弄清楚它的用途。
奖金问题:lambda
返回什么?我猜一个(Boolean, self._children)
的元组,但那可能是错的......
答案 0 :(得分:9)
这是列表解包,只包含一个元素的列表。相当于:
child = filter(lambda ch: ch.name == path[0], self._children)[0]
(例外情况是如果self._children
的多个元素满足条件 - 在这种情况下,Kotti的代码会抛出一个错误(解包的值太多),而上面的代码将使用第一个列表)。
另外:lambda ch: ch.name == path[0]
会返回True
或False
。
答案 1 :(得分:2)
[child] = filter(lambda ch: ch.name == path[0], self._children)
这会将child设置为结果的第一个元素。它是list [0] = ... [0]的语法糖。它也可以是两个元素,如[a, b] = [10, 20]
,它是a = 10; b = 20
此外,右侧的元素数量应该与左侧相同,否则会抛出异常