请解释lambda的工作原理

2024-05-13 06:21:53 发布

您现在位置:Python中文网/ 问答频道 /正文

Possible Duplicate:
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)

输出如下:

^{pr2}$

有人能解释一下lambda是如何长格式工作的吗?在lambda函数中,word和{}如何传递给s?在

谢谢。在


Tags: andlambdaanmakeisexamplewhatimplementation
2条回答

正如Jake已经描述过的,您的make_repeater返回另一个与2绑定的函数(这称为closure)。所以你的代码大致相当于:

twice = lambda s: s * 2

print twice('word')
print twice(5)

大致相当于:

^{pr2}$

大致相当于:

print 'word' * 2
print 5 * 2

所以你实际上要做的是:

  • 计算表达式'word' * 2,这将导致'wordword'(Python将字符串的乘法定义为重复给定次数的字符串)
  • {{cd7>你不应该计算这个表达式中的结果

lambda函数不关心其参数的类型,并在运行时动态地决定哪种乘法方法是正确的,这一事实称为dynamic typing。在

函数make_repeater返回另一个函数(lambda)。在您的示例中,lambda函数被赋予名称“tween”。lambda有一个参数“s”和一个“static”值“n”-创建lambda时定义“n”(在本例中,它被分配给“2”)。“s”的值是在调用lambda时确定的-“word”或“5”。word*2=“wordword”和5*2=10。在

相关问题 更多 >