python - 谁能解释一下这段代码中发生了什么?
问题描述
谁能解释一下这段代码中发生了什么以及存储在 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))
解决方案
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
推荐阅读
- java - 在java中的有限时间内在输出中写一些东西
- ruby - Reassemble jumbled method
- winapi - How to detect if Windows 10 is in tablet mode
- r - centos集群上的doparallel和foreach问题
- javascript - javascript onclick 功能不起作用
- python - 我如何在python中抓取网络特殊词
- java - java PrinterDialog 在 Mac 上工作时似乎在 Windows 上失败
- javascript - 使用 React Hooks 设置嵌套数组的状态
- java - 将 Dropbox 视频添加到 html 网页
- node.js - 如何使用 ANY 方法获取 Lambda 函数以从 ApiGateway 获取 httpmethod?