是否每个Python函数都必须在末尾返回?

是否每个Python函数都必须在末尾返回?,python,python-3.x,recursion,return,Python,Python 3.x,Recursion,Return,所以我画了一个递归函数的图表,让我对递归了如指掌,我注意到显然每个函数最后都执行return 另一个问题,函数究竟返回什么?传递给它的所有参数(假设有多个参数)?还是某种价值 (t只是执行实际绘图的实体) def koch(t,n): “”“绘制长度为n的科赫曲线。”“” 如果n快速回答:否 详细回答:Python中不需要使用return语句,到达函数代码末尾而不返回将使函数自动returnnone 附加问题:函数返回什么? 它返回提供给return语句的对象(如果找到)。如果未找到return

所以我画了一个递归函数的图表,让我对递归了如指掌,我注意到显然每个函数最后都执行return

另一个问题,函数究竟返回什么?传递给它的所有参数(假设有多个参数)?还是某种价值

(t只是执行实际绘图的实体)

def koch(t,n):
“”“绘制长度为n的科赫曲线。”“”
如果n快速回答:否

详细回答:Python中不需要使用
return
语句,到达函数代码末尾而不返回将使函数自动
returnnone

附加问题:函数返回什么? 它返回提供给
return
语句的对象(如果找到)。如果未找到
return
语句,则返回
None

所以我画了一个递归函数的图表,让我对递归了如指掌,我注意到显然每个函数最后都执行return

返回本身只是意味着调用帧从调用堆栈弹出,程序计数器设置回调用前的状态,等等。根据您的评论,它看起来有点像“回溯”,但请注意,与回溯相反,函数的副作用不会被还原/撤消。例如,添加到列表、画一条线、写入文件等都不会恢复。这是递归中需要的行为

现在,有时返回某个值很有用。例如:

def foo(x,y):
    return x+y
这里
foo
不仅返回调用方,而且首先计算
x+y
,然后返回结果,这样您就可以声明
z=foo(2,3)
。因此,这里调用
foo
,计算
2+3
,返回
5
,并分配给
z

另一个问题,函数究竟返回什么?传递给它的所有参数(假设有多个参数)

在Python中,所有函数都返回一个值。如果您将其指定为:

return <expression>

或者根本没有
return
(但是您到达了函数的末尾),
None
将被返回。

如果语句是
return expression
,函数将返回表达式的结果。否则它将返回
None
。是的,但此函数不计算任何值。因此它将返回
None
。在这种情况下,Return仅表示返回?Return
始终表示返回。但你也带着“回报值”。如果未指定,则为
None
。好的,谢谢。那么在递归中,计算机只是回溯?在第二列中每个函数的末尾(比如说),计算机不再有任何要执行的东西,所以它会转到它停止的地方(在本例中是第一列,或者通常是“左”列)?这是我提问的最初动机。@Max:是的,但回溯不是正确的词。回溯意味着机器所做的一切都将被还原。这里的情况并非如此(也不是一般情况)。但事实上,它看起来已经结束并继续。
return <expression>
return