关于lambda s:s
在某前辈的代码中发现这么一句:
_=lambda s:s
当时不太理解这么写的目的,google之后明白了(顺便吐槽百度,搜“lambda s:s”出来的结果没几个有用的),记录如下:
一般情况下出现这种写法应该是用在"and_or"技巧中,也可以叫做“逻辑短路”。相信学过C语言的一定很熟悉“and一假为假、or一真为真”这句话。
python中lambda的bool值永远为真(这里指lambda本身而不是它的返回值),《dive into python》原文翻译:
lambda函数在布尔环境中总是为真。(这并不意味这lambda函数不能返回假值。这个函数对象的布尔值为真;它的返回值可以是任何东西。)