"return" 的位置差异
Difference in placement of "return"
我目前正在学习如何编码,但在使用 return 函数时遇到了问题:
unionFind = UnionFind(n)
for A, B in edges:
if not unionFind.union(A, B):
return False
return True
当我输入 return True 时没有缩进,我能够得到 False 的结果。但是,如果我对此做同样的事情:
unionFind = UnionFind(n)
for A, B in edges:
if not unionFind.union(A, B):
return False
return True
我只收到 True。这与以下相同:
unionFind = UnionFind(n)
for A, B in edges:
if not unionFind.union(A, B):
return False
else:
return True
我检查了多个在线资源,我似乎无法理解 return 函数在这种情况下的行为方式(是否受 for 循环或 if 条件的影响)并且非常感谢一些指导。谢谢。
这不是 return 语句的行为方式。它是关于代码范围的。
当你在没有缩进的情况下放置语句时,return True
在 for
循环范围之外,并且只有在遍历所有 A
和 B
之后才会到达它仅当 not unionFind.union(A, B)
条件不适用于所有夫妇时。
如果将 return True
缩进或放在 else
语句中,它将在 for
范围内到达,这意味着只有前几个A
和 B
将被选中。
希望对您有所帮助。
对于这种情况,您将 return True
放在 for
循环之外。这意味着所有迭代都不能执行 return False
以便它在循环结束后会 return True
。但是,结果是 False
,因为至少有一次迭代条件是 True
,这使得它在循环结束前 return False
。
for A, B in edges:
if not unionFind.union(A, B):
return False
return True
根据相同的逻辑思维,您将 return 位置更改为
for A, B in edges:
if not unionFind.union(A, B):
return False
return True
或
for A, B in edges:
if not unionFind.union(A, B):
return False
else:
return True
for
循环中每次迭代的执行将检查您的if
条件是否为True
。如果条件是 True
那么你将到达 return False
并且循环结束。否则,条件不满足,因此程序将改为执行 return True
。由于 return
语句,这也使循环结束。请注意,这两种情况将始终只执行其 for
循环的第一次迭代,因为它将 return
立即结束时 True
或 False
。因此,这两种情况总是得到 return True
的原因是因为第一次迭代不满足条件,从而导致 return True
.
我目前正在学习如何编码,但在使用 return 函数时遇到了问题:
unionFind = UnionFind(n)
for A, B in edges:
if not unionFind.union(A, B):
return False
return True
当我输入 return True 时没有缩进,我能够得到 False 的结果。但是,如果我对此做同样的事情:
unionFind = UnionFind(n)
for A, B in edges:
if not unionFind.union(A, B):
return False
return True
我只收到 True。这与以下相同:
unionFind = UnionFind(n)
for A, B in edges:
if not unionFind.union(A, B):
return False
else:
return True
我检查了多个在线资源,我似乎无法理解 return 函数在这种情况下的行为方式(是否受 for 循环或 if 条件的影响)并且非常感谢一些指导。谢谢。
这不是 return 语句的行为方式。它是关于代码范围的。
当你在没有缩进的情况下放置语句时,return True
在 for
循环范围之外,并且只有在遍历所有 A
和 B
之后才会到达它仅当 not unionFind.union(A, B)
条件不适用于所有夫妇时。
如果将 return True
缩进或放在 else
语句中,它将在 for
范围内到达,这意味着只有前几个A
和 B
将被选中。
希望对您有所帮助。
对于这种情况,您将 return True
放在 for
循环之外。这意味着所有迭代都不能执行 return False
以便它在循环结束后会 return True
。但是,结果是 False
,因为至少有一次迭代条件是 True
,这使得它在循环结束前 return False
。
for A, B in edges:
if not unionFind.union(A, B):
return False
return True
根据相同的逻辑思维,您将 return 位置更改为
for A, B in edges:
if not unionFind.union(A, B):
return False
return True
或
for A, B in edges:
if not unionFind.union(A, B):
return False
else:
return True
for
循环中每次迭代的执行将检查您的if
条件是否为True
。如果条件是 True
那么你将到达 return False
并且循环结束。否则,条件不满足,因此程序将改为执行 return True
。由于 return
语句,这也使循环结束。请注意,这两种情况将始终只执行其 for
循环的第一次迭代,因为它将 return
立即结束时 True
或 False
。因此,这两种情况总是得到 return True
的原因是因为第一次迭代不满足条件,从而导致 return True
.