for i in range(x):
    if i>80:
        break
#这里遍历一个列表元素是否满足条件
else:
    print('go')
#如果全部都不满足条件会跳转执行这一步
比较好奇这个 else 居然可以正确执行,最开始我还为是代码缩进错误,官方有类似这种写法的范例么?
|  |      1tinyproxy      2016-09-21 10:39:13 +08:00 | 
|  |      2songkaiape OP @tinyproxy THX | 
|      3husky      2016-09-21 10:44:00 +08:00 | 
|  |      4Lonely      2016-09-21 10:44:30 +08:00 这也能发个帖 | 
|  |      5tftk      2016-09-21 10:49:21 +08:00 曾经面试的时候这么用了,被面试官批我逻辑不清晰呵呵呵 | 
|  |      6songkaiape OP @tftk 可能那个面试官也不是很了解这个特性吧。第一次见确实感觉比较奇怪 | 
|      7linuxchild      2016-09-21 10:55:53 +08:00 via iPhone @tftk 逻辑上看上去的确不清晰吧 可读性不太好 | 
|  |      9songkaiape OP  2 @Lonely  不喜直接无视就好了啊,何必回复呢,我又不想骗你铜币。你知道不代表别人都知道。 V2 Python 初学者那么多,就当给他们提个醒 | 
|      10prefere      2016-09-21 11:10:38 +08:00 if else  for else while else 容易弄混 | 
|      11jiang42      2016-09-21 11:28:25 +08:00 via iPhone | 
|  |      12loryyang      2016-09-21 11:31:31 +08:00 这个 else 逻辑比较坑爹,不建议用,很多人看不懂,而且容易搞反 | 
|  |      13TheCure      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 | 
|  |      14mgna17      2016-09-21 12:03:33 +08:00 for - else 挺好用的啊, for 没有被 break 则会执行后续 else 中的代码。 不过 else 这个词的确是个槽点,要是把 else 改成 than 之类的就好了。 | 
|  |      15wizardforcel      2016-09-21 12:08:45 +08:00 effective python 第 12 条:不要在 for 和 while 循环后面写 else 块 | 
|  |      16ytmsdy      2016-09-21 12:13:46 +08:00 还是按照正常的语法来吧,时间久了,很容易看错的 | 
|  |      17echopan      2016-09-21 12:29:46 +08:00 不要再 for 后面写 else,一般 if 后面写 | 
|  |      18Trim21      2016-09-21 12:37:11 +08:00 for i in range(x): ....if i>80: ........break #这里遍历一个列表元素是否满足条件 ....else: ........print('go') #如果全部都不满足条件会跳转执行这一步 这两种在逻辑上有什么区别吗..... | 
|      19Kabie      2016-09-21 13:02:43 +08:00 ...特定情况很好用。。。 说看不懂的只是写得太少了。。。 | 
|      20yongzhong      2016-09-21 13:07:19 +08:00 看标题知内容系列 | 
|  |      21scipio      2016-09-21 13:33:24 +08:00 没人吐槽代码中的这句注释么? > #如果全部都不满足条件会跳转执行这一步 这样的理解是误人子弟。 | 
|  |      22songkaiape OP | 
|      23ifaii      2016-09-21 14:01:24 +08:00 @Trim21 明显有不同吧,楼主的是 range(x)中所有的元素都不满足 if 时才执行 else ,你这样写就变成了只要遇到不满足 if 就执行 else | 
|  |      2421grams      2016-09-21 14:20:46 +08:00 我觉得挺好的,简洁,要不这么写的话,你还要加判断循环是执行完了还是 break 了。 | 
|      25zhanglintc      2016-09-21 15:58:30 +08:00 pythonic 进阶必备 | 
|  |      26dalang      2016-09-21 17:15:21 +08:00 for else 在部分场合很好用呀。 | 
|  |      27easing      2016-09-21 17:16:08 +08:00 没用过的人表示逻辑确实不清晰,坑爹。。 | 
|      28spikeLIN      2016-09-21 17:32:07 +08:00 via iPhone 不建议这么用 | 
|  |      29likuku      2016-09-21 17:34:36 +08:00 茴香豆的“茴”字有九九八十一种写法... | 
|      30lynx      2016-09-21 17:43:15 +08:00 这个特性挺好用的,没必要为了照顾一部分人改写成一堆很麻烦的语句 这个语法也不属于偏门 | 
|      31weyou      2016-09-21 17:54:23 +08:00 这个特性很好用啊, 我一直用,很久以前发现了就感觉逻辑很清晰自然啊,在循环查找时可以少定义一个变量来判断。类似的还有 try...except...else... 他们的含义就是如果没有 break ( except )就执行 else | 
|      32laoyur      2016-09-21 18:00:23 +08:00 @mgna17  > for - else 挺好用的啊, for 没有被 break 则会执行后续 else 中的代码。 > 不过 else 这个词的确是个槽点,要是把 else 改成 than 之类的就好了。 Python 初学者表示不知道这个特性,在没有去看文档的情况下,先斗胆自己猜测一下 for else 的意思: for 如果没有执行到 break ,就会执行 else 中的代码 那么问题来了,如果我有意在 for 的最后一次 loop 中 break ,那这个 else 会不会执行? | 
|  |      34geew      2016-09-21 18:23:26 +08:00 @laoyur 只要 break 执行了 else 里面的就不会执行 In [626]: for i in range(10): .....: print i, .....: if i == 9: .....: break .....: else: .....: print 'else' .....: 0 1 2 3 4 5 6 7 8 9 | 
|      35mingyun      2016-09-21 22:29:44 +08:00 @songkaiape 这个解释不错 | 
|  |      36techmoe      2016-09-22 05:48:36 +08:00 via Android 这个和 while 简单拼拼也能和 for 一样用的道理差不多吧 | 
|  |      37shily      2016-09-22 11:07:18 +08:00 via Android 作为 Java 程序员一眼就猜到是 for-else 语句。 看了楼上才明白 else 是在没有 break 的情况下才执行的。 |