av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術文章
文章詳情頁

Python, for-else, while-else是否造成了語義歧義 ( 增加心智負擔 )?

瀏覽:110日期:2022-08-20 08:03:48

問題描述

看到用了 for-else/while-else的代碼, 往往不能馬上搞懂 else 處代碼的意思

因為, 腦袋不能馬上反應, else 到底表示了什么樣的語義( 還需要轉幾個彎 )

(但是 try - except -else 沒有帶來語義上的歧義)

相關代碼

能否一眼辨別出, 什么時候, 什么條件下 else處代碼會執行?

for i in range(5):... print(i)... else:... print(’Iterated over everything :)’)for i in range(5):... if i == 2:... break... print(i)... else:... print(’Iterated over everything :)’)for i in []:... print(i)... else:... print(’Still iterated over everything (i.e. nothing)’)> i = 0>>> while i <= 5:... i += 1... print i... else:... print ’Yep’for x in data: if meets_condition(x):breakelse: # raise error or do additional processing

問題解答

回答1:

題主認為語義不明是可以理解的。畢竟其他語言中的 else 只跟 if 搭配,更何況這里的 else 并不符合自然語義。

在自然語義下,else 有 '其它的' 的意思,但對 for, while, try 型 else,用 '除了以上程序考慮到的情況' 來解釋此子句并不合理。私以為理解成 '主塊正常結束后的情況' 更為正確——所謂主塊,即 else 附屬的 循環體 或 try 子句; 所謂正常,即不通過特殊手段中止控制流(異常 或 循環中的 break)。

這么理解可能更清晰些。

回答2:

我喜歡這個例子:

n = 17for d in range(2,n): if n % d == 0:print(n, ’是合數’)breakelse: print(n, ’是素數’)

沒有else的話我們應該加個bool變量,for循環后還加個if/else。用for/else的話簡單多了。你慢慢會熟悉;-)

回答3:

沒有歧義,你不習慣而已。

回答4:

Fluent Python的作者認為是會增加的,他這樣說到:I think else is a very poor choice for the keyword in all cases except if. It implies an excluding alternative, like “Run this loop, other‐ wise do that”, but the semantics for else in loops is the opposite: “Run this loop, then do that”. This suggests then as a better keyword — which would also make sense in the try context: “Try this, then do that.” However, adding a new keyword is a breaking change to the language, and Guido avoids it like the plague.

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 免费视频一区二区 | 国产精品国产成人国产三级 | 国产精品久久久久久久久久久久久 | 国产成人av在线播放 | 国产91在线播放 | 久久精品久久精品 | 久久久精品一区二区三区四季av | 日韩一区二区三区在线看 | 久久久久九九九女人毛片 | 91国内精精品久久久久久婷婷 | 美女黄频 | 四虎影 | 日韩精品三区 | 久久久久久久亚洲精品 | 国产精品免费看 | 国产高清免费 | 久久久久亚洲 | 国产精品久久久久久久久久不蜜臀 | 熟女毛片 | 一区二区免费高清视频 | 国产在线视频一区二区 | 日韩精品在线免费 | 美女久久久 | 日本中文字幕日韩精品免费 | 日日夜夜精品视频 | 日本涩涩视频 | 成人妇女免费播放久久久 | 久久久久国产一区二区三区四区 | 免费天天干 | 国产亚洲精品久久久优势 | 毛片.com| 日本成人二区 | 免费视频一区二区 | 亚洲国产精品视频一区 | 国产一区二区三区久久久久久久久 | 伊人免费网 | 日韩欧美在线观看视频 | 精品国产欧美一区二区 | 久久国产精品亚洲 | 亚洲精品一区二区在线观看 | 久久久久久国产精品三区 |