社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python lambda返回值

Saar Gamzo • 3 年前 • 1037 次点击  

我正在学习用python返回的lambda选项,我有一个问题:

我需要在这个函数中填写申报表:

def func(n):
   if n==0:
      print("finished")
   else:
      return ___
func(5)()()()()()
func(3)()()()
func(8)()()()()()()()()

输出:

finished
finished
finished

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

谢谢

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/132081
 
1037 次点击  
文章 [ 2 ]  |  最新文章 3 年前
simre
Reply   •   1 楼
simre    3 年前

运算符()是函数调用。 例如:

def foo():
   print('Foo executed')

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

在上面的代码中,如果执行 foo() ,它会打印“Foo executed”。但如果你执行 bar() ,它会回来的 foo ,这就是函数。所以你可以执行 bar()() ,其中第一个()执行函数栏,返回foo,然后使用第二个()调用返回的foo函数。

编辑:当我输入它时,你删除了what is the bunch(),因为它们对你来说是新的。。。但我只是把它放在那里也许会有帮助。

Sayse
Reply   •   2 楼
Sayse    3 年前

具体来说,你需要使用lambdas和func n-1是对的

return lambda: func(n-1)

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