这是Python中的一行代码:
return 2,lambda x: 0
这是什么意思?
这个程序来自堆栈交换帖子:
让我感到困惑,因为我想知道程序员为什么不简单地编码
return 2,0
对不起,我是Python新手......如果对某些人来说这听起来很明显......
答案 0 :(得分:2)
返回:
return ((2), (lambda x: 0))
返回的值是一个元组,第一个值为2,第二个值为lambda函数。
答案 1 :(得分:2)
我认为这个问题已经被模糊化了。我一般都明白"它是什么意思?"在编程上下文中表示"我如何解析这个?"所以我会从那个角度回答。
return
python中return
的真正含义是"此行后面的任何内容都是函数"的结果。它是一个声明,而不是一个函数调用,所以不要试图将它放入你的解析中。
return x
应该被理解为正在返回表达式 x
的声明。
因此,问题就变成了:2, lambda x: 0
表达式是什么?
(我已经添加了一个可读性的空间 - Python并不关心逗号周围的空格,尽管按照惯例,你应该使用空格逗号)
Python的元组类型不需要括号。因此a, b, c
与(a, b, c)
因此,有两个表达式绑定在元组中:2
和lambda x: 0
。
您可以将2, lambda x: 0
视为(2, lambda x: 0)
- 它们完全相同。
2
?这是两个。
lambda x: 0
?这是" lambdas"的python语法。或者"匿名函数"。 Python实践真的不鼓励使用lambda绑定,我通常建议你不要这样做。 Lambdas非常有用,但它们在python中有点破碎,会让你遇到麻烦。
基本语法是关键字lambda
,以逗号分隔的参数列表:
和结果表达式。
在这种情况下,逗号分隔的参数只是x
,结果表达式是常量0
。
您可以将此lambda重写为
def f(x):
return 0
所以,这个语句返回的元组有一个常量整数作为它的第一个元素,一个函数接受一个参数并返回0
作为它的第二个元素。
如果您想要对这些组件中的任何组件进行更深入的解释,那么您的问题必须更加具体。 "它是什么意思?"非常模糊,很难以完整的方式回答。
答案 2 :(得分:1)
在shell中试试。这是非常自我解释的:
>>> def f():
... return 2, lambda x: 0
...
>>> f()
(2, <function <lambda> at 0x109d1b758>)
>>> f()[1]('anything')
0