您的位置:首页 > 编程语言 > Python开发

python的空else讨论

2013-10-17 16:52 134 查看
遇到了一个空的else,我印象中c是不允许的,觉得蛮有意思。

1 a = {}
2 a[0] = {'m':1}
3 a[1] = {'m':2}
4 a[2] = {'m':3}
5 for b in range(10):
6         for c in a.itervalues():
7                 print c['m']
8                 if c['m'] >= 1:
9                         c['m'] -= 1
10                         break
11
12         else:
13                 print 'hello world'


贴一段代码,我总结的else是这样的,关键问题在break。我们常规理解这个break打破的是内层for循环,外层应该会继续执行,但是不然,因为break了,所以直接后面的都不执行了,也就是else也会观察这个break的动作,这应该跟for的返回值有关。去掉break就会发现下面的else没有用,“hello world”会被打印10次。也就是说只有上面的break不工作的时候else内部才可能工作。

这一个特性可以增加控制流的种类,具体用途,可以用来对指定序列进行两种处理,第二种作为第一种的备用,当第一种方法失效可以用第二种,就想到这么多。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: