可能重复:
What is a lambda and what is an example implementation?
这是lambda的代码(来自Python的Byte):
def make_repeater(n):
return lambda s: s * n
twice = make_repeater(2)
print twice('word')
print twice(5)
输出是这样的:
wordword
10
有人可以解释一下lambda如何在longform中工作吗?如何将word
和5
传递给lambda函数中的s
?
感谢。
答案 0 :(得分:4)
正如杰克所描述的那样,您的make_repeater
会返回另一个n
绑定到2
的函数(这称为closure)。所以你的代码大致相当于:
twice = lambda s: s * 2
print twice('word')
print twice(5)
这又大致相当于:
def twice(s):
return s * 2
print twice('word')
print twice(5)
这又大致相当于:
print 'word' * 2
print 5 * 2
所以你实际做的是:
'word' * 2
,结果为'wordword'
(字符串的乘法由Python定义为重复给定次数的字符串)5 * 2
,结果为10
(这不应该让您感到惊讶)lambda函数不关心其参数的类型并在运行时动态决定 哪个乘法方法正确,这一事实称为dynamic typing。
答案 1 :(得分:1)
函数make_repeater返回另一个函数(lambda)。在您的示例中,lambda函数的名称为“两次”。 lambda有一个参数,“s”和一个“静态”值,“n” - 在创建lambda时定义“n”(在这种情况下,它被赋值为“2”)。调用lambda时确定“s”的值 - “word”或5. word * 2 =“wordword”和5 * 2 = 10.