tft每日頭條

 > 圖文

 > if優美的語句

if優美的語句

圖文 更新时间:2024-10-02 23:03:03

if優美的語句?老婆給當程序員的老公打電話:“下班順路買一斤包子帶回來,如果看到賣西瓜的,買一個”當晚,程序員老公手捧一個包子進了家門……老婆怒道:“你怎麼就買了一個包子?”老公答曰:“因為看到了賣西瓜的”,下面我們就來聊聊關于if優美的語句?接下來我們就一起去了解一下吧!

if優美的語句(耐人尋味的for)1

if優美的語句

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

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

任何編程語言都提供了 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

但是,你會發現 for…else… 與 if…else… 表現得不一樣,按照以往經驗來說,執行了 for 語句塊的代碼就不執行 else 裡面了,反之亦然。

然而,我們看到的卻恰恰相反,for 循環結束之後接着又執行了 else 語句塊,這就有點意思了,if … else … 翻譯成大白話就是 如果…否則…,而 for…else… 翻譯成白話成了 直到… 然後 …,為什麼不把它寫成 for…then… 的句式呢?

for 循環遍曆空列表也會執行 else 語句塊,因為它是正常退出 for 循環的一種特例情況。

for i in []:

print(i)

else:

print("end")

>>>

0

繼續探索,我們用 break 提前終止 for 循環

for i in range(3):

print(i)

if i % 2 == 0:

break

else:

print("end")

>>>

0

循環遇到 break 退出後,整個語句就結束,else 語句塊也不執行了。

綜上,我們可以得出這樣一個結論,隻有當循環裡沒有遇到 break 時,else 塊才會執行。

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

帶着這個問題,我也在 StackOver Flow 找了一下答案,在平時的開發中真的很少有 for…else… 的應用場景,不過,像下面這種場景用 for else 還真是一種 pythonic 的用法。

當你用 for 循環疊代查找列表的中的某個元素時,如果找到了就提前退出,如果疊代完了還沒找到需要以另外一種形式通知調用者時,用 for else 無疑是最好的選擇。

for i in mylist:

if i == target:

break

process(i)

else:

raise ValueError("List argument missing terminal flag.")

如果不用 for…else… , 那麼還需要專門建立一個臨時标記變量來标記是否已經找到了

found = False

for i in mylist:

if i == target:

found = True

break

process(i)

if not found:

raise ValueError("List argument missing terminal flag.")

當你想在房間裡找某樣東西時,隻要在任意位置找到了,就停止繼續搜查工作。但如果把整個房間都翻遍了,還沒找到我們想要的東西,需要告訴人家說:這兒沒有你要找的東西。遇到這樣的情況用 for … else ,除此之外,最好不要用它


文章作者:劉志軍

文章來源:Python之禅


【燈塔大數據】微信公衆号介紹:中國電信北京研究院通過整合電信自有數據、互聯網數據和線下數據,創建了業内領先的“燈塔”大數據行業應用平台,緻力于與行業合作夥伴共同打造大數據行業應用生态圈。目前我們面向市場研究、廣告、汽車、金融、人力資源等諸多行業領域,提供零售研究、消費者研究、店鋪選址、精準營銷、泛義征信等服務,助力企業在大數據時代楊帆遠航。

微信公衆号【燈塔大數據】關鍵字信息:

【人工智能】獲取人工智能時代的發展思考 ppt

【半月刊】下載大數據瞭望半月刊

【網絡安全】獲取國民網絡安全報告全文

【23個理由】下載《大數據讓你興奮的23個理由》電子書

【思維導圖】下載12種工具的獲取方式

【 燈塔 】 查看更多關鍵字回複

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved