Python λ return 值
Python lambda return value
我正在学习 python 中 return 的 lambda 选项,我有一个问题:
我需要在这个函数中填写 returns:
def func(n):
if n==0:
print("finished")
else:
return ___
func(5)()()()()()
func(3)()()()
func(8)()()()()()()()()
输出:
finished
finished
finished
我认为这是一个像 return func(n-1) 这样的递归调用,但它不起作用,并抛出错误。
有没有办法克服额外的空括号?数他们?做点什么,因为它应该是可运行的。
谢谢
运算符()是函数调用。
例如:
def foo():
print('Foo executed')
def bar():
# We return the foo FUNCTION itself, without calling it.
return foo
在上面的代码中,如果你执行foo()
,它会打印“Foo executed”。但是如果执行bar()
,就会returnfoo
,就是这个函数。所以你可以执行 bar()()
,其中第一个 () 执行函数 bar,returning foo,然后第二个 (),你调用 returned foo 函数。
编辑:当我输入它时,你删除了那些 () 是什么,因为它们对你来说是新的......但我只是把它留在那里也许它会有所帮助。
关于需要使用 lambdas 和 func n-1,你是对的,特别是
return lambda: func(n-1)
这个 return 是一个不需要传入任何参数来处理括号的 lambda,return 的 return 是用 n-1 调用的函数,在大多数情况下您正在进行的调用是 return 下一个 lambda 函数调用
我正在学习 python 中 return 的 lambda 选项,我有一个问题:
我需要在这个函数中填写 returns:
def func(n):
if n==0:
print("finished")
else:
return ___
func(5)()()()()()
func(3)()()()
func(8)()()()()()()()()
输出:
finished
finished
finished
我认为这是一个像 return func(n-1) 这样的递归调用,但它不起作用,并抛出错误。 有没有办法克服额外的空括号?数他们?做点什么,因为它应该是可运行的。
谢谢
运算符()是函数调用。 例如:
def foo():
print('Foo executed')
def bar():
# We return the foo FUNCTION itself, without calling it.
return foo
在上面的代码中,如果你执行foo()
,它会打印“Foo executed”。但是如果执行bar()
,就会returnfoo
,就是这个函数。所以你可以执行 bar()()
,其中第一个 () 执行函数 bar,returning foo,然后第二个 (),你调用 returned foo 函数。
编辑:当我输入它时,你删除了那些 () 是什么,因为它们对你来说是新的......但我只是把它留在那里也许它会有所帮助。
关于需要使用 lambdas 和 func n-1,你是对的,特别是
return lambda: func(n-1)
这个 return 是一个不需要传入任何参数来处理括号的 lambda,return 的 return 是用 n-1 调用的函数,在大多数情况下您正在进行的调用是 return 下一个 lambda 函数调用