3 ms·
That still doesn't get you statements. You can't get context managers or exception handling (although you can raise exceptions) into lambdas, I've tried.
by zardeh 10y ago
That still doesn't get you statements.
You can't get context managers or exception handling (although you can raise exceptions) into lambdas, I've tried.
- masklinn 10y agoWell you might be able to if you add a bunch of named function combinators wrapping these, but definitely not with only lambdas, unless you define your combinators using `ast`, which I think would let you define statements via expressions.
- AnkhMorporkian 10y agoThat's an awful lot of effort to go to to avoid naming a function.
- zardeh 10y agoWell sure, you could do something like def apply_ctx(ctx, func, *func_args, **func_kwargs): with ctx as __ctx: func(*func_args, **func_kwargs, ctx=__ctx) but you can't do that itself as a lambda. And I consider modifying the ast cheating :P
- masklinn 10y ago> but you can't do that itself as a lambda. And I consider modifying the ast cheating :P No disagreement, really depends whether you're a "rules" or "spirit" kind of person though.