为什么 lambda 在 lambda return 函数中?
Why lambda within lambda return a function?
b = lambda x: (lambda x: x)
print(b(88))
为什么 python 代码打印函数而不是 88?
为什么这与下面的代码不同?
b = lambda x:c(x)
c = lambda x:x
print(b(88))
b = lambda x: (lambda x: x)
您的代码等同于:
def b(x): # <- This "x" is not used
def anonymous(x):
return x;
return anonymous
所以你可以这样称呼它:
>>> b("anything")(88)
88
此代码:
c = lambda x:x
b = lambda x:c(x)
相当于:
def c(x):
return x
def b(x):
return c(x)
因此,如果您调用 b(88)
,它将调用 c(88)
和 return 结果。
c(88)
只是 returns 88
.
函数是 python 中的第一个 class 个对象。这意味着它们可以被视为值。在您的例子中,您的 b
函数正在返回一个函数(我们称它为 c
)。请注意,我去掉了 b
函数中的 x
参数,因为它没用。
b = lambda: (lambda x: x)
c = b()
现在你可以调用 c
,因为它是一个函数(c
需要一个参数,x
):
print(c(88)) # this prints 88
谢谢大家的帮助。我想我已经掌握了窍门:
b = lambda x: (lambda x: x)
相当于:
def lambda_1(x):
def lambda_2(x):
return x
return lambda_2
b = lambda_1
而
b = lambda x: (lambda x: x)(x)
相当于:
def lambda_1(x):
def lambda_2(x):
return x
return lambda_2(x)
b = lambda_1
b = lambda x: (lambda x: x)
print(b(88))
为什么 python 代码打印函数而不是 88? 为什么这与下面的代码不同?
b = lambda x:c(x)
c = lambda x:x
print(b(88))
b = lambda x: (lambda x: x)
您的代码等同于:
def b(x): # <- This "x" is not used
def anonymous(x):
return x;
return anonymous
所以你可以这样称呼它:
>>> b("anything")(88)
88
此代码:
c = lambda x:x
b = lambda x:c(x)
相当于:
def c(x):
return x
def b(x):
return c(x)
因此,如果您调用 b(88)
,它将调用 c(88)
和 return 结果。
c(88)
只是 returns 88
.
函数是 python 中的第一个 class 个对象。这意味着它们可以被视为值。在您的例子中,您的 b
函数正在返回一个函数(我们称它为 c
)。请注意,我去掉了 b
函数中的 x
参数,因为它没用。
b = lambda: (lambda x: x)
c = b()
现在你可以调用 c
,因为它是一个函数(c
需要一个参数,x
):
print(c(88)) # this prints 88
谢谢大家的帮助。我想我已经掌握了窍门:
b = lambda x: (lambda x: x)
相当于:
def lambda_1(x):
def lambda_2(x):
return x
return lambda_2
b = lambda_1
而
b = lambda x: (lambda x: x)(x)
相当于:
def lambda_1(x):
def lambda_2(x):
return x
return lambda_2(x)
b = lambda_1