Python else 还可以这样用?

2016-09-21 10:34:36 +08:00
 songkaiape
for i in range(x):
    if i>80:
        break
#这里遍历一个列表元素是否满足条件
else:
    print('go')
#如果全部都不满足条件会跳转执行这一步

比较好奇这个 else 居然可以正确执行,最开始我还为是代码缩进错误,官方有类似这种写法的范例么?

4242 次点击
所在节点    Python
37 条回复
tinyproxy
2016-09-21 10:39:13 +08:00
songkaiape
2016-09-21 10:41:41 +08:00
husky
2016-09-21 10:44:00 +08:00
Lonely
2016-09-21 10:44:30 +08:00
这也能发个帖
tftk
2016-09-21 10:49:21 +08:00
曾经面试的时候这么用了,被面试官批我逻辑不清晰呵呵呵
songkaiape
2016-09-21 10:54:44 +08:00
@tftk 可能那个面试官也不是很了解这个特性吧。第一次见确实感觉比较奇怪
linuxchild
2016-09-21 10:55:53 +08:00
@tftk 逻辑上看上去的确不清晰吧 可读性不太好
ericls
2016-09-21 10:59:41 +08:00
@tftk 应该的
songkaiape
2016-09-21 10:59:55 +08:00
@Lonely 不喜直接无视就好了啊,何必回复呢,我又不想骗你铜币。你知道不代表别人都知道。 V2 Python 初学者那么多,就当给他们提个醒
prefere
2016-09-21 11:10:38 +08:00
if else
for else
while else
容易弄混
jiang42
2016-09-21 11:28:25 +08:00
@tftk
@songkaiape 如果我是面试官,有人敢写 for else ,肯定也是要批的,这不是熟不熟这个特性的问题,而是代码风格问题
loryyang
2016-09-21 11:31:31 +08:00
这个 else 逻辑比较坑爹,不建议用,很多人看不懂,而且容易搞反
TheCure
2016-09-21 11:43:14 +08:00
for a in xrange(10):
for b in xrange(20):
if something(a, b):
# Break the inner loop...
break
else:
# Continue if the inner loop wasn't broken.
continue
# Inner loop was broken, break the outer.
break

这个 else 逻辑很坑
在我的项目里写这种代码绝对不给过 review
mgna17
2016-09-21 12:03:33 +08:00
for - else 挺好用的啊, for 没有被 break 则会执行后续 else 中的代码。
不过 else 这个词的确是个槽点,要是把 else 改成 than 之类的就好了。
wizardforcel
2016-09-21 12:08:45 +08:00
effective python 第 12 条:不要在 for 和 while 循环后面写 else 块
ytmsdy
2016-09-21 12:13:46 +08:00
还是按照正常的语法来吧,时间久了,很容易看错的
echopan
2016-09-21 12:29:46 +08:00
不要再 for 后面写 else,一般 if 后面写
Trim21
2016-09-21 12:37:11 +08:00
for i in range(x):
....if i>80:
........break
#这里遍历一个列表元素是否满足条件
....else:
........print('go')
#如果全部都不满足条件会跳转执行这一步

这两种在逻辑上有什么区别吗.....
Kabie
2016-09-21 13:02:43 +08:00
...特定情况很好用。。。

说看不懂的只是写得太少了。。。
yongzhong
2016-09-21 13:07:19 +08:00
看标题知内容系列

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/307744

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX