Python:为什么lambda在内联中定义变量if?

And*_*rom 1 python lambda

在Python中使用lambdas玩弄我发现以下代码在Python 2.7.3中是合法的并返回lambda:

x = lambda: 1 if x else 2
Run Code Online (Sandbox Code Playgroud)

为什么lambda在以这种方式使用时会定义x?

编辑:Python语法显然对我来说太难了,看到接受的答案......

Mar*_*cin 5

为什么lambda在以这种方式使用时会定义x?

它没有.赋值x = [any expression]定义x[any expression].在这种情况下,表达式是lambda: 1 if x else 2,它在没有参数的情况下求值为一个函数对象,并且它是x持有的.

  • 这可以通过尝试`x = lambda:1,如果y else 2`(假设`y`尚不存在)来证明. (3认同)