Питоны lambda
более ограничены, чем обычные def
функции. Обычно lambda
требует выражения в теле ... но pass
это просто утверждение. Таким образом, очевидным решением было бы использовать:
lambda x: None # or since you don't use x "lambda _: None"
Практическое правило: все, что может быть присвоено переменной, также может находиться в теле lambda
. Вы можете узнать больше о грамматике в Справочник по языку Python
6.13. Lambdas
lambda_expr ::= "lambda" [parameter_list] ":" expression
lambda_expr_nocond ::= "lambda" [parameter_list] ":" expression_nocond
и аналогичные для pass
7. Simple statements
simple_stmt ::= expression_stmt
[...]
| pass_stmt
[...]
pass_stmt ::= "pass"
Или в более формальной полной спецификации грамматики . Здесь вы можете использовать любой test
для присвоения и лямбда-тела, а test
может быть expr
. Вот (серьезно) короткая часть:
pass_stmt: 'pass'
annassign: ':' test ['=' test]
lambdef: 'lambda' [varargslist] ':' test
test: or_test ['if' or_test 'else' test] | lambdef
or_test: and_test ('or' and_test)*
and_test: not_test ('and' not_test)*
not_test: 'not' not_test | comparison
comparison: expr (comp_op expr)*