代码之家  ›  专栏  ›  技术社区  ›  Saar Gamzo

Python lambda返回值

  •  -1
  • Saar Gamzo  · 技术社区  · 3 年前

    我正在学习用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)的递归调用,但它不起作用,并抛出了一个错误。 有没有办法克服额外的空括号?数一数?做点什么,因为它应该是可运行的。

    谢谢

    2 回复  |  直到 3 年前
        1
  •  1
  •   Sayse    3 年前

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

    return lambda: func(n-1)
    

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

        2
  •  0
  •   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(),因为它们对你来说是新的。。。但我只是把它放在那里也许会有帮助。