亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁技術(shù)文章
文章詳情頁

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

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

問題描述

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

因?yàn)? 腦袋不能馬上反應(yīng), else 到底表示了什么樣的語義( 還需要轉(zhuǎn)幾個(gè)彎 )

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

相關(guān)代碼

能否一眼辨別出, 什么時(shí)候, 什么條件下 else處代碼會(huì)執(zhí)行?

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:

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

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

這么理解可能更清晰些。

回答2:

我喜歡這個(gè)例子:

n = 17for d in range(2,n): if n % d == 0:print(n, ’是合數(shù)’)breakelse: print(n, ’是素?cái)?shù)’)

沒有else的話我們應(yīng)該加個(gè)bool變量,for循環(huán)后還加個(gè)if/else。用for/else的話簡(jiǎn)單多了。你慢慢會(huì)熟悉;-)

回答3:

沒有歧義,你不習(xí)慣而已。

回答4:

Fluent Python的作者認(rèn)為是會(huì)增加的,他這樣說到: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.

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 亚洲高清成人欧美动作片 | 手机日韩理论片在线播放 | 美国第一毛片 | 成人精品一区二区久久久 | 久久精品a一国产成人免费网站 | 亚洲三级视频 | 欧美一区二区三区视频 | 久久久久久一级毛片免费无遮挡 | 国产精品18久久久久网站 | 欧美性猛交xxx免费看人妖 | 欧美一级毛片欧美毛片视频 | 国产ssss在线观看极品 | 国产福利社区 | 欧美怡红院在线观看 | 欧美成人观看免费完全 | 成视频年人黄网站免费 | 一级做a级爰片性色毛片视频 | 黄录像欧美片在线观看 | 国产91精品一区二区麻豆亚洲 | 一区二区3区免费视频 | 亚洲精品一区二区不卡 | 男女超猛烈啪啦啦的免费视频 | 99热久久国产精品免费观看 | 亚洲欧美午夜 | 国产片91人成在线观看 | 欧美视频精品在线 | 亚洲视频在线看 | 免费一级片视频 | 亚洲欧美日本综合 | 免费一级做a爰片久久毛片 免费一级做a爰片性色毛片 | 国产福利在线91 | 成年美女黄网站色视频大全免费 | 最新福利片v国产片 | 免费精品久久久久久中文字幕 | 欧美亚洲在线 | 久久99国产亚洲精品 | 国产精品所毛片视频 | 亚洲综合中文 | 久久久久久久久久久观看 | 久久中文亚洲国产 | 日日a.v拍夜夜添久久免费 |