Python &引用;否则";加上;而";“神秘的”;“中断”;

Python &引用;否则";加上;而";“神秘的”;“中断”;,python,while-loop,break,Python,While Loop,Break,我正在经历。来自C环境,它打在了我的脸上,让我大吃一惊,难以置信。然后,我自己试了一下: bCondition = True while bCondition: print("Inside while\n") bCondition = False else: print("Inside else\n") print("done\n") 此代码呈现以下输出 #Output Inside while Inside else done #Output done 现在,我的问题是,为

我正在经历。来自C环境,它打在了我的脸上,让我大吃一惊,难以置信。然后,我自己试了一下:

bCondition = True
while bCondition:
  print("Inside while\n")
  bCondition = False
else:
  print("Inside else\n")
print("done\n")
此代码呈现以下输出

#Output
Inside while
Inside else
done
#Output
done

现在,我的问题是,为什么?我们为什么需要这个?为什么两个块都被执行?如果和其他是为彼此设计的,那么什么用例会使此设计成为一个有用的设计来实现呢

同样,如果我们只是将代码更改为包含一个
中断
,那么行为就更神秘了

此代码呈现以下输出

#Output
Inside while
Inside else
done
#Output
done
为什么两个块都被跳过?
break
不只是为了打破循环,那么为什么它要打破
else
块呢

我也经历了这个过程,但无法消除我的疑虑。

在python中循环后使用else子句是为了检查某个对象是否满足某个给定条件

如果您正在实现搜索循环,那么如果循环没有使用诸如break之类的构造突然终止,则会在循环结束时执行else子句,因为假设如果使用break,则满足搜索条件

因此,当您使用break时,不会计算else子句。但是,当while条件的计算结果为false之后,您自然地退出循环时,将计算else子句,因为在这种情况下,假定没有对象与您的搜索条件匹配

for x in data:
    if meets_condition(x):
        print "found %s" % x
        break
else:
    print "not found"
    # raise error or do additional processing 
python中循环后使用else子句是为了检查某个对象是否满足某个给定条件

如果您正在实现搜索循环,那么如果循环没有使用诸如break之类的构造突然终止,则会在循环结束时执行else子句,因为假设如果使用break,则满足搜索条件

因此,当您使用break时,不会计算else子句。但是,当while条件的计算结果为false之后,您自然地退出循环时,将计算else子句,因为在这种情况下,假定没有对象与您的搜索条件匹配

for x in data:
    if meets_condition(x):
        print "found %s" % x
        break
else:
    print "not found"
    # raise error or do additional processing 

在第一个套件中执行的break语句终止循环,而不执行else子句的套件。-这句话有什么不清楚的地方?我同意这很奇怪,但这是规范的一部分。您没有被强制使用此表单。请看一看,不要在
while
中使用
else
。在第一个套件中执行的break语句终止循环,而不执行else子句的套件。-这句话有什么不清楚的地方?我同意这很奇怪,但这是规范的一部分。您没有被强制使用此表单。请看一看,在
while
中不要使用
else
。很好的解释…我在python initiallynice解释中的
for
else
语法下也有问题…我在python initiallynice解释中的
for
else语法下也有问题