我想以递归的顺序打印出列表中的元素。
def f3(alist):
if alist == []:
print()
else:
print(alist[-1])
f3(alist[:-1])
我知道它运作良好,但我不知道
之间的区别return f3(alist[:-1])
和
f3(alist[:-1])
实际上两者都运作良好。 我的意见就是这些。
f3([1,2,3])
f3([])
f3([3,2,1])
答案 0 :(得分:1)
两者之间存在差异,尽管在此计划中并不明显。请看下面的示例,其中我正在做的是将一个值作为参数传递并递增它,从而使它在达到10或更大时返回值:
from sys import exit
a = 0
def func(a):
a += 1
if a >= 10:
return a
exit(1)
else:
# Modifications are made to the following line
return func(a)
g = func(3)
print(g)
此处输出为10
现在,如果我以第二种方式重新编写代码而没有像这样的“return”关键字:
from sys import exit
a = 0
def func(a):
a += 1
if a >= 10:
return a
exit(1)
else:
# Modifications are made to the following line
func(a)
g = func(3)
print(g)
输出为“无”。
这是因为我们没有返回任何值来处理。
简而言之,返回就像函数中的内部通信一样,可以处理,而不是再次运行函数。