我很难理解这个return陈述.
布尔测试下面if not test(a)是false(means if test(a)is true),else语句返回b.
但就在它返回之后a,重写有价值a,不是吗?
def proc4(a, b):
if not test(a):
b = 'udacity'
else:
return b
return a
Run Code Online (Sandbox Code Playgroud)
对于人们来说,这是一个非常普遍的问题:当我的函数有多个返回点时,它意味着什么?
撇开关于是否应该发生多重回报的争论,事实是他们这样做了.要记住的重要一点是:
函数返回后立即完成.
在我熟悉的每种现代编程语言中,只要函数返回返回点,它就会退出处理*.如果有返回值,则返回到最初调用函数的位置.Python也不例外.
你的功能有一点额外的垃圾,使其更难阅读,这没有帮助.具体来说,赋值b是完全多余的,因为永远不会使用赋值.为了清晰起见,我们可以像这样重写您的函数,同时仍然可以解释多个返回:
def proc4(a, b): # line 1
if test(a): # line 2
return b # line 3
return a # line 4
Run Code Online (Sandbox Code Playgroud)
现在发生了什么呢.假设test(a)评估为True第2行.我们进入该if区块,并遇到第3行:return b.该函数现在返回b调用它的任何位置的值,并且执行完成.第4行永远不会执行.
或者,如果test(a)评估为False,则我们不进入该if块.在这种情况下,我们跳过第3行,直接到第4行.现在,我们执行第4行,并将值返回a到proc4被调用的地方.
*某些流控制语句(例如finally在许多语言中)可能导致在遇到return语句后执行函数中的代码.为了简单起见,因为它不在主题,我不打算在这个答案中加入.感谢@Racso指出我错过了这个!