能写:
类别 | 例子 | 能否放进 lambda |
---|---|---|
比较运算符 | x == 3 , x in s |
✅ |
逻辑运算符 | x and y , not z |
✅ |
条件表达式(三元) | x if x > 0 else 0 |
✅ |
短路求值 | x or default , x and func(x) |
✅ |
位运算结果 | bool(mask & flag) |
✅ |
函数/方法调用 | str.upper(x) |
✅ |
列表/生成器推导式 | [i*2 for i in range(3)] |
✅(本身是表达式) |
不能写进 lambda 的:
类别 | 例子 | 原因 |
---|---|---|
赋值语句 | x = 1 |
语句,不是表达式 |
断言语句 | assert x > 0 |
语句 |
for / while / if 块 | for i in ...: ... |
语句 |
try / except | try: ... except: ... |
语句 |
return / yield / pass / break / continue | 都是语句 |
Lambda 只能装“表达式”,装不下“语句”。
能写在 return
后面的东西,就能写在 lambda :
后面