假设有如下代码:

for i in range(10):
if i == 5:
print 'found it! i = %s' % i
else:
print 'not found it ...'

你期望的结果是,当找到5时打印出:

found it! i = 5

实际上打印出来的结果为:

found it! i = 5
not found it ...

显然这不是我们期望的结果。

根据官方文档说法:

>When the items are exhausted (which is immediately when the sequence is empty), the suite in the else clause, if present, is executed, and the loop terminates.

>A break statement executed in the first suite terminates the loop without executing the else clause’s suite. A continue statement executed in the first suite skips the rest of the suite and continues with the next item, or with the else clause if there was no next item.

https://docs.python.org/2/reference/compound_stmts.html#the-for-statement

大意是说当迭代的对象迭代完并为空时,位于else的子句将执行,而如果在for循环中含有break时则直接终止循环,并不会执行else子句。

所以正确的写法应该为:

for i in range(10):
if i == 5:
print 'found it! i = %s' % i
break
else:
print 'not found it ...'

当使用pylint检测代码时会提示 Else clause on loop without a break statement (useless-else-on-loop)

所以养成使用pylint检测代码的习惯还是很有必要的,像这种逻辑错误不注意点还是很难发现的。

最新文章

  1. [转]linux下svn命令大全
  2. 仿iOS底部弹出popUpWindow
  3. tomcat 创建虚拟主机
  4. Android三-AsyncTask
  5. 几个Google中国的访问IP
  6. Gtk中的文本视图(GtkTexViewWidget)
  7. nutch http file 截断问题
  8. Swing实现文件选择(目录选择)附导出
  9. VirtualBox中的Ubuntu没有权限访问共享文件夹/media/sf_bak
  10. Spring Boot 系列(四)静态资源处理
  11. vxWorks内核实现基本原理
  12. Java内存泄漏分析系列之六:JVM Heap Dump(堆转储文件)的生成和MAT的使用
  13. IE的浏览器模式、文本模式
  14. 【NLP CS224N笔记】Lecture 2 - Word Vector Representations: word2vec
  15. idea git 发起一个pull request 请求
  16. TeeChart的坐标轴
  17. webservice需要的包以及demo
  18. SCOM中的通配符
  19. Android中将一个图片切割成多个图片[转]
  20. 五十 常用第三方模块 PIL

热门文章

  1. idea配置sliksvn解决无法配置1.8 format 问题
  2. Kestrel Web 服务器学习笔记
  3. UrlRewrite重写url
  4. EmbarrassedBird网站
  5. 手动安装mysql-5.0.45.tar.gz
  6. Leetcode 976. Largest Perimeter Triangle
  7. UVA 11176 Winning Streak
  8. Balanced Lineup(线段树的简单了解)
  9. LeetCode Predict the Winner
  10. mysql时间随笔