我的问题是关于这个声明我在网上看到的是"行跟随' 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忽略"第二个数字更大"排队并打印另一个"第一个数字更大"线。
我试图尽可能清楚地说明这一点。感谢
答案 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)
在第一个示例中,首先比较两个值9
和7
,然后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
语句的情况下引发异常的无效操作),raise
和break
。后两者仅在循环中有效。