最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python for和else語句趣談

 更新時間:2019年07月02日 11:17:56   作者:FOOFISH-PYTHON之禪  
這篇文章主要介紹了python for和else語句趣談,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

老婆給當程序員的老公打電話:“下班順路買一斤包子帶回來,如果看到賣西瓜的,買一個?!碑斖?,程序員老公手捧一個包子進了家門……老婆怒道:“你怎么就買了一個包子?”老公答曰:“因為看到了賣西瓜的?!?/p>

程序員買西瓜的笑話可能大部分讀者都知道,今天寫的這篇文章和這個笑話有一定的關(guān)系。

任何編程語言都提供了 if...else... 語句,表示如果(if)滿足條件就做某件事,否則(else)就做另外一件事:

if a==b:
print("true")
else:
print("false")

然而,在 Python 中 else 不僅可以和 if 搭配使用,還有另一種特有的句法是 for…else …,除此之外,它還可以和 while、try…except 組合使用,例如:

for i in range(3):
print(i)
else:
print("end")
>>>
0
1
2
end

但是,你會發(fā)現(xiàn) for…else… 與 if…else… 表現(xiàn)得不一樣,按照以往經(jīng)驗來說,執(zhí)行了 for 語句塊中的代碼就不執(zhí)行 else 里面的,反之亦然。

然而,我們看到的卻恰恰相反,for 循環(huán)結(jié)束之后接著又執(zhí)行了 else 語句塊,這就有點意思了,if … else … 翻譯成白話就是 如果…否則…,而 for…else… 翻譯成白話成了 直到… 然后 …,為什么不把它寫成 for…then… 的句式呢?這不更好理解嗎?

另外,即使 for 循環(huán)遍歷的是一個空列表也會執(zhí)行 else 語句塊。

for i in []:
print(i)
else:
print("end")
>>>
end

繼續(xù)探索,如果我們用 break 提前終止 for 循環(huán),會發(fā)生什么?

for i in range(3):
print(i)
if i % 2 == 0:
break
else:
print("end")
>>>
0

循環(huán)遇到 break 退出后,整個語句就結(jié)束,else 語句塊也不執(zhí)行了。

綜上,我們可以得出這樣一個結(jié)論,只有當循環(huán)里沒有遇到 break 時,else 塊才會執(zhí)行。此刻,你應該明白了,真正和 else 搭配使用的是 for 循環(huán)中的 break,break ... else ... 才是兩個互斥的條件

Python 之父為什么要搞出這樣的一種語法糖出來呢?這是我們常人沒法理解的。不過「python之禪」告訴了我們答案: "Although that way may not be obvious at first unless you're Dutch."。

在平時的開發(fā)中真的很少有 for...else... 的應用場景,不過,像下面這種場景用 for else 還真是一種 pythonic 的用法。

當你用 for 循環(huán)迭代查找列表的中的某個元素時,如果找到了就立刻退出循環(huán),如果迭代完了列表還沒找到需要以另外一種形式(比如異常)的方式通知調(diào)用者時,用 for...else... 無疑是最好的選擇。

# https://stackoverflow.com/a/9980752/1392860
for i in mylist:
if i == target:
break
process(i)
else:
raise ValueError("List argument missing terminal flag.")

如果不用 for...else... , 那么還需要專門建立一個臨時標記變量來標記是否已經(jīng)找到了

found = False
for i in mylist:
if i == target:
found = True
break
process(i)
if not found:
raise ValueError("List argument missing terminal flag.")

當你想在房間里找某樣東西時,只要在任意位置找到了,就停止繼續(xù)搜查工作。但如果把整個房間都翻遍了,還沒找到我們想要的東西時,需要告訴人家,很抱歉,這兒沒有你要找的東西。遇到這樣的情況時就用 for ... else ,除此之外,恐怕只會引起誤操作。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python基礎(chǔ)學習之組織文件

    python基礎(chǔ)學習之組織文件

    今天帶大家復習python基礎(chǔ)知識,此文章將要介紹如何組織文件,既拷貝,移動等,文中有非常詳細的代碼示例,對正在學習python的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • python實現(xiàn)京東訂單推送到測試環(huán)境,提供便利操作示例

    python實現(xiàn)京東訂單推送到測試環(huán)境,提供便利操作示例

    這篇文章主要介紹了python實現(xiàn)京東訂單推送到測試環(huán)境,提供便利操作,涉及Python基于requests模塊的網(wǎng)絡請求操作相關(guān)使用技巧,需要的朋友可以參考下
    2019-08-08
  • python用selenium打開瀏覽器后秒關(guān)閉瀏覽器的解決辦法

    python用selenium打開瀏覽器后秒關(guān)閉瀏覽器的解決辦法

    最近朋友在學Selenium的時候遇到一個問題,當執(zhí)行完selenium程序后,瀏覽器會閃退也就是自動關(guān)閉,這篇文章主要給大家介紹了關(guān)于python用selenium打開瀏覽器后秒關(guān)閉瀏覽器的解決辦法,需要的朋友可以參考下
    2023-07-07
  • Python實現(xiàn)用networkx繪制MultiDiGraph

    Python實現(xiàn)用networkx繪制MultiDiGraph

    這篇文章主要介紹了Python實現(xiàn)用networkx繪制MultiDiGraph方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • python代碼實現(xiàn)五子棋游戲

    python代碼實現(xiàn)五子棋游戲

    這篇文章主要為大家詳細介紹了python代碼實現(xiàn)五子棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 在樹莓派2或樹莓派B+上安裝Python和OpenCV的教程

    在樹莓派2或樹莓派B+上安裝Python和OpenCV的教程

    這篇文章主要介紹了在樹莓派2或樹莓派B+上安裝Python和OpenCV的教程,主要基于GTK庫,并以Python2.7和OpenCV 2.4.X版本的安裝作為示例,需要的朋友可以參考下
    2015-03-03
  • PyCharm永久激活方式(推薦)

    PyCharm永久激活方式(推薦)

    這篇文章主要介紹了PyCharm永久激活方式,本文通過圖文并茂的方式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • 用python生成一張壁紙實例代碼

    用python生成一張壁紙實例代碼

    大家好,本篇文章主要講的是用python生成一張壁紙實例代碼,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • Python如何生成隨機數(shù)及random隨機數(shù)模塊應用

    Python如何生成隨機數(shù)及random隨機數(shù)模塊應用

    這篇文章主要介紹了Python如何生成隨機數(shù)及random隨機數(shù)模塊應用,首先我們要知道在python中用于生成隨機數(shù)的模塊是random,在使用前需要import。由此展開內(nèi)容介紹,需要的小伙伴可以參考一下
    2022-06-06
  • Python如何基于rsa模塊實現(xiàn)非對稱加密與解密

    Python如何基于rsa模塊實現(xiàn)非對稱加密與解密

    這篇文章主要介紹了Python如何基于rsa模塊實現(xiàn)非對稱加密與解密,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01

最新評論

凤凰县| 盐亭县| 平度市| 平定县| 安远县| 莱芜市| 克什克腾旗| 清远市| 高邮市| 黑山县| 潮安县| 沧州市| 安远县| 宜川县| 通河县| 北流市| 米泉市| 永修县| 龙川县| 北川| 信阳市| 郯城县| 金湖县| 略阳县| 资兴市| 格尔木市| 出国| 论坛| 西贡区| 台中县| 铁岭县| 三河市| 武山县| 荔波县| 万宁市| 桦南县| 东光县| 桂平市| 苏尼特左旗| 锦屏县| 鹤峰县|