退货声明和缩进

Hir*_*nda -3 python return

我很难理解这个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)

Hen*_*ter 5

对于人们来说,这是一个非常普遍的问题:当我的函数有多个返回点时,它意味着什么

撇开关于是否应该发生多重回报的争论,事实是他们这样做了.要记住的重要一点是:

函数返回后立即完成.

在我熟悉的每种现代编程语言中,只要函数返回返回点,它就会退出处理*.如果有返回值,则返回到最初调用函数的位置.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行,并将值返回aproc4被调用的地方.

*某些流控制语句(例如finally在许多语言中)可能导致在遇到return语句后执行函数中的代码.为了简单起见,因为它不在主题,我不打算在这个答案中加入.感谢@Racso指出我错过了这个!