Python lambda 返回值

问题描述 投票:0回答: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) 这样的递归调用,但它不起作用,并且抛出错误。 有没有办法克服多余的空括号?数数他们?做一些事情,因为它应该是可运行的。

谢谢

python lambda
3个回答
1
投票

你是对的,特别是需要使用 lambda 和 func n-1

return lambda: func(n-1)

这会返回一个不需要传入任何参数的 lambda 来处理括号,并且返回的是使用 n-1 调用的函数,在您进行的大多数调用中,返回下一个 lambda 函数打电话


0
投票

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

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

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

在上面的代码中,如果执行

foo()
,它会打印“Foo已执行”。但是如果你执行
bar()
,它会返回
foo
,这就是函数。因此,您可以执行
bar()()
,其中第一个 () 正在执行函数 bar,返回 foo,然后使用第二个 () 调用返回的 foo 函数。

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


0
投票

问题:Python Lambda 函数

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

🧸💬 在这个例子中,Python 中的数组连接可以使用数字迭代和连接。

content = map(lambda x: "finished" if x == 0 else "".join(["()"] * x), [16] );
content = list( content )[0];
print( content );

屏幕截图

Screen Shot

© www.soinside.com 2019 - 2024. All rights reserved.