首页
学习
活动
专区
圈层
工具
发布

返回值
EN

Stack Overflow用户
提问于 2022-04-16 16:12:43
回答 2查看 261关注 0票数 0

我正在学习如何在python中返回lambda选项,我有一个问题:

我需要填写这个函数中的返回:

代码语言:javascript
复制
def func(n):
   if n==0:
      print("finished")
   else:
      return ___
func(5)()()()()()
func(3)()()()
func(8)()()()()()()()()

产出:

代码语言:javascript
复制
finished
finished
finished

我认为这是一个递归调用,比如返回func(n-1),但是它不起作用,并抛出一个错误。是否有办法克服额外的空括号?数一数?做点什么,因为它应该是可以运行的。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-04-16 16:25:37

你说得对,需要使用lambdas和func 1,特别是

代码语言:javascript
复制
return lambda: func(n-1)

这将返回一个不需要传入任何参数的lambda来处理括号,返回的是使用n-1调用的函数,在大多数调用中,该函数返回的是下一个lambda函数调用。

票数 1
EN

Stack Overflow用户

发布于 2022-04-16 16:24:21

操作符()是函数调用。例如:

代码语言:javascript
复制
def foo():
   print('Foo executed')

def bar():
   # We return the foo FUNCTION itself, without calling it.
   return foo

在上面的代码中,如果您执行foo(),它将打印"Foo“。但是如果您执行bar(),它将返回foo,这是一个函数。因此您可以执行bar()(),其中第一个()正在执行函数条,返回foo,然后使用第二个()调用返回的foo函数。

编辑:当我输入它时,您删除了这些()的内容,因为它们对您来说是新的.但我把它留在那里也许会有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71895503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档