退货陈述在"中表现得很奇怪,如果" Python中的语句

时间:2016-07-15 02:22:23

标签: python if-statement return

我的问题是关于这个声明我在网上看到的是"行跟随' if语句'并且与" if语句相同的缩进"将始终运行,无论“if if”语句是否为'是真还是假。"我将使用下面的示例显示。

所以我有这个过程,它接受两个数字作为输入并返回两个输入中较大的一个。

因此,第一个例子中的第4行和第5行代码与"处于相同的缩进级别;如果a> b:"应始终按照上述说法运行。

示例#1

def bigger(a,b):
    if a>b:
        x = "the first number is bigger"
    x = "the second number is bigger"
    return x
print bigger(9,7)

Python打印"第二个数字更大,"所以代码是按照我在开头写的原始声明工作的。即使这是错误的,因为9> 7。

但是我遇到混淆的地方是在以下示例中使用return语句:

示例#2

def bigger(a,b):
    if a>b:
        return "the first number is bigger"
    return "the second number is bigger"
print bigger(9,7)

这一次,Python打印"第一个数字更大。"这是正确的,因为9> 7

我的困惑:在第二个例子中不应该是第四行代码,"返回"第二个数字更大"",总是运行,因为它' s在" if语句的同一缩进级别,"就像我们在例子#1中看到的那样?

似乎两个代码示例相互矛盾,因为在示例#1中,Python识别出"第二个数字更大"行和行打印,但在示例#2中,Python忽略"第二个数字更大"排队并打印另一个"第一个数字更大"线。

我试图尽可能清楚地说明这一点。感谢

4 个答案:

答案 0 :(得分:0)

  

我的困惑:不应该是第二个例子中的第4行代码,   "返回"第二个数字更大"",总是运行,因为它在   " if语句的缩进级别相同,"就像我们看到的一样   例子#1?

这是因为当你有一个return语句时函数执行会中断:

def bigger(a,b):
    if a>b:
        return "the first number is bigger" # function execution breaks here!!!
    return "the second number is bigger"
print bigger(9,7)

答案 1 :(得分:0)

您可能想要阅读一些关于功能和返回意味着什么。 非常简单地说,如果执行了一个return语句,那么该函数将超出范围,并且不会在它之后运行任何内容。

答案 2 :(得分:0)

在第一个示例中,首先比较两个值97,然后x = the first number is bigger,然后分配x= the second number is bigger并返回x。这就是你看到这一行的原因。

在第二个例子中,它还比较了两个值,但它立即返回x,因此它不会进入下一行。

答案 3 :(得分:0)

我认为“你读的陈述”有点过于简单化了。只有在$roboto-font-path: './materialize/fonts/roboto/';语句或后面的缩进块期间没有任何更改Python的正常控制流时,它才是正确的。如果控制流程发生变化,则不适用,这正是您在第二个示例中所做的。 if语句确实会更改控制流,以使函数立即退出,因此return之后的其余代码无法运行。

更改控制流的其他语句是if(以及导致在没有明确raise语句的情况下引发异常的无效操作),raisebreak。后两者仅在循环中有效。