Python中for else注意事项
2024-08-31 03:12:18
假设有如下代码:
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检测代码的习惯还是很有必要的,像这种逻辑错误不注意点还是很难发现的。
最新文章
- [转]linux下svn命令大全
- 仿iOS底部弹出popUpWindow
- tomcat 创建虚拟主机
- Android三-AsyncTask
- 几个Google中国的访问IP
- Gtk中的文本视图(GtkTexViewWidget)
- nutch http file 截断问题
- Swing实现文件选择(目录选择)附导出
- VirtualBox中的Ubuntu没有权限访问共享文件夹/media/sf_bak
- Spring Boot 系列(四)静态资源处理
- vxWorks内核实现基本原理
- Java内存泄漏分析系列之六:JVM Heap Dump(堆转储文件)的生成和MAT的使用
- IE的浏览器模式、文本模式
- 【NLP CS224N笔记】Lecture 2 - Word Vector Representations: word2vec
- idea git 发起一个pull request 请求
- TeeChart的坐标轴
- webservice需要的包以及demo
- SCOM中的通配符
- Android中将一个图片切割成多个图片[转]
- 五十 常用第三方模块 PIL