【发布时间】:2016-11-18 02:56:21
【问题描述】:
我的问题是关于这个 statement 我在网上读到的内容类似于“'if 语句'之后的行并且与“if 语句”处于相同的缩进将始终运行,不管‘if 语句’是真还是假。”我将在下面使用我的示例来展示这一点。
所以我有这个程序,它接受两个数字作为输入并返回两个输入中较大的一个。
因此,第一个示例中的第 4 行和第 5 行代码,与“if 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
我的困惑:第二个示例中的第 4 行代码“返回“第二个数字更大””不应该总是运行,因为它与“if 语句”处于相同的缩进级别,就像我们看到的那样在示例 #1 中?
这两个代码示例似乎相互矛盾,因为在示例 #1 中,Python 识别出“第二个数字更大”行并打印该行,但在示例 #2 中,Python 忽略了“第二个数字更大”行并打印另一个“第一个数字更大”行。
我试图尽可能清楚地说明这一点。谢谢
【问题讨论】:
-
这没什么奇怪的。按照设计,在 Python 中立即从函数返回。
-
@paisanco 谢谢。我从来不知道退货会立即返回。我以为它不会立即返回,所以我当然感到困惑。你知道的越多!
标签: python if-statement return