这是返回我期望值的代码:
python
def function1():
highest = 0
for x in range(100):
for y in range(100):
if x+y > highest:
highest = x+y
return highest
print(function1())
此代码显示“ 198”。
现在,如果我在if语句下缩进return语句,就像这样:
def function1():
highest = 0
for x in range(100):
for y in range(100):
if x+y > highest:
highest = x+y
return highest
print(function1())
代码显示为“ 1”。
为什么?幕后发生了什么?
很抱歉,如果这是一个琐碎的问题,但不了解其基本结构和内容,我只是通过实验来学习...
答案 0 :(得分:0)
return语句在您调用它时停止循环。因此,在第一个示例中,它遍历整个for循环,然后返回highest
的值。在第二个示例中,它在for循环的第一个条目上返回,因此不会遍历整个for循环。
答案 1 :(得分:0)
它在第二个循环的第二步中终止。
highest = 0
x = 0
y = 0
if 0+0 > 0 (false):
increment y to 1:
第二次运行:
highest = 0
x = 0
y = 1
if 0+1 > 0 (true)
highest = 1
return # return command is called and therefore the execution of the function ends
return语句结束函数调用的执行并“返回”结果。
答案 2 :(得分:0)
一条int id = comboBox.SelectedValue;
语句结束了该功能。如果将其放在return
语句中,则条件成立时该函数将立即停止。因此,它将返回比if
大的x+y
的第一个值,这种情况发生在0
和x = 0
时,而不是继续寻找更高的值。
答案 3 :(得分:0)
在第一个示例中,return
语句在两个for
循环下面,但在两个循环之外也都缩进了。这意味着,直到对for
和x
的每种可能组合都对嵌套的y
循环表达式进行求值为止。
另一方面,在第二个示例中,return
语句内缩进了if
。到达if
语句后,Python解释器将读取在该级别缩进的所有行,包括return highest
。因此,第一次x+y > highest
(即x+y==1
时,if语句运行,并且该函数返回1
。该返回值是一个早期中断,因此即使会有更多的值可以处理,没关系,因为您明确要求它早日返回。