辣鸡 for...else

2022-08-11 16:14:50 +08:00
 still97
for i in range(3):
	if i == 1:
    	print(’第二次循环')
else:
    print('for 循环结束')
    print('i 值', i)
for i in range(3):
	if i == 1:
    	print('第二次循环')
then:
    print('for 循环结束')
    print('i 值', i)

就很不理解,命名是 for...then...的意思,为什么要用 for...else...这么离谱的东西

2683 次点击
所在节点    Python
12 条回复
mmm159357456
2022-08-11 16:20:52 +08:00
第一次看到 for...else 的时候我觉得是不是写错了,然后细看没写错
hsfzxjy
2022-08-11 16:21:41 +08:00
如果你 break 了,else 是不会执行的
just1
2022-08-11 16:25:54 +08:00
用途是处理自然 for 完毕而不是 break

语言真惨,这都被喷
lookStupiToForce
2022-08-11 16:28:09 +08:00
python 哲学,有些东西写出来就是避免任何人用的(狗头

你可以不理解,大家也都不理解
https://stackoverflow.com/questions/9979970/why-does-python-use-else-after-for-and-while-loops

换成 ifnobreak 就没任何歧义了,但现在没有这个关键字,所以要么忍着用并在 else 后加注释# nobreak ,要么别用
wxf666
2022-08-11 16:33:09 +08:00
难道是不想加太多关键词了?

then = 1 √
else = 2 ×
still97
2022-08-11 17:58:27 +08:00
@just1 没问题啊,用途肯定有的啊,只是说这个语法名称不是很 py
still97
2022-08-11 18:14:54 +08:00
@lookStupiToForce 是的,一定要用的话得加注释
ClericPy
2022-08-11 20:34:44 +08:00
当年 try else 更魔性

进来发现只是吐槽语义语法就没意思了

勉强能理解凑合了, 毕竟语言作者母语可能也不是纯英语, 平时重试啥的还是挺常用的, 除了能直接 return 的地方, 很多时候 break 是需要 ifbreak 判断的
yuruizhe
2022-08-11 21:49:10 +08:00
记得好像不建议用 for+else……
就像不建议用 goto ?
lzjun
2022-08-12 00:53:29 +08:00
把他理解为 break ... else .. 就对了
still97
2022-08-12 09:28:29 +08:00
@ClericPy 使用场景肯定是有的,但是就是语义实在太不明确
spiritlin
2022-08-12 16:41:54 +08:00
当初看到这个语法也是非常迷,以至于一直搞反它的含义

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

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

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

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

© 2021 V2EX