Python:`lambda`和`lambda_`之间有什么区别?

6

我知道lambda:lambda var:的功能,但是lambda_:实际上是什么意思?


是的,我刚试了一下。分词并不像我想象的那样工作。这就是为什么我尝试以合理的方式使用空格的原因。 - Karl Knechtel
4
如果你在某处看到这样的代码 def foo(lambda_: Callable): …,那么这意味着作者试图使用单词“lambda”来表示“回调函数”,但不得不添加下划线以避免语法错误。 - deceze
2个回答

5

lambda_只是一个变量名,与其他变量名一样。像foox

如果你看到:

lambda_: Something

那实际上是一种用于类型提示的变量注释,与以下代码相同:
num: int
num = 0

有趣的是,num: print("Hello") 会评估表达式的右侧。但是 a = num:print("Hello") 会出现语法错误。你知道为什么吗? - Muslimbek Abduganiev
1
@MuslimbekAbduganiev 注释不能在等号的右侧,因此 x = y: int 会引发语法错误,你需要使用 x: int = y - juanpa.arrivillaga

-3

lambda: 表示 lambda 方法不接受任何参数

#!/usr/bin/env python3.10

def caller(var):
    var()


caller(lambda : print("OP"))

lambda var: 表示该方法将以 var 作为参数

#!/usr/bin/env python3.10

def caller(var,arg):
    var(arg)


foo = lambda x: print(x)
caller(foo, "OP")

lambda _: 这里的 _ 是一个参数

#!/usr/bin/env python3.10

def caller(var,__):
    var(__)


foo = lambda _ : print(_)
caller(foo, "OP")

所有上述程序的输出结果为OP


在编程中,lambda_之间没有空格。 - mufassir
1
lambda_ is a variable name. a = lambda :print("Hello") will execute properly, but a = lambda_:print("Hello") will fail with syntax error. What you mean is probably lambda _: - Muslimbek Abduganiev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接