能写:
| 类别 | 例子 | 能否放进 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 : 后面