首页 > 解决方案 > 谁能解释一下这段代码中发生了什么?

问题描述

谁能解释一下这段代码中发生了什么以及存储在 doubler 和 Tripler 中的内容。

这是代码:

def myfunc(n):
  return lambda i: i*n

doubler = myfunc(2)
tripler = myfunc(3)
val = 11
print("Doubled: " + str(doubler) + ". Tripled: " + str(tripler))

标签: pythonlambda

解决方案


myfunc是一个创建匿名函数(又名lambda)的函数

使输入加倍的doubler函数也是如此。

当您打印语句时,您会得到函数的表示,而不是结果:

Doubled: <function myfunc.<locals>.<lambda> at 0x0000000003373268>. Tripled: <function myfunc.<locals>.<lambda> at 0x00000000033732F0>

您必须调用您的函数,并使用您刚刚定义的参数。

print("Doubled: " + str(doubler(val)) + ". Tripled: " + str(tripler(val)))

现在打印:

Doubled: 22. Tripled: 33

推荐阅读