Re: [翻譯] Google 建議的 Python 風格指南 14

看板Python作者 (殘雲奪月)時間11年前 (2013/05/10 20:40), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串3/3 (看更多)
Never use == or != to compare singletons like None. Use is or is not. 我這篇文章主要是要討論這點 上面規則我認為 True 和 False 是例外。 True 和 False 雖然是個 singletons。 但是使用 == 會比 is 好。 在 True 和 False 的相等比較 會使用 == 而非 is 我要討論的情況是 test1() == test2() 的情形 而非 test1() == True,寫成這樣是脫褲子放屁 基本上需要 test1() == test2() 的情形 很多都是為了檢查各個狀態是否一致 假設 test1 回傳燃料棒是否在運作中 test2 回傳的冷卻系統是否在運作 我們會有這樣的程式碼 flag1 = test1() flag2 = test2() # 偵測系統是否異常的系統 # 要嗎兩個都有運作,要嗎兩個都不運作 if flag1 == flag2: print '毫無反映,只是個核電廠' else: if flag1: print '已進化成核彈' else: print '天氣好熱,開個冷氣吧' flag1 = test1() # 系統是否運作 flag2 = test2() # 冷卻系統是否啟動 if flag1 == flag2: print '正常' else: print '異常' 為何要用 == 而非 not xor,因為 1. == 提供較可讀的方式 2. not xor 需要 較多次的運算 3. 如果之後回傳值改變,則 xor 會不適用。 為何使用 == 而非 is,因為 1. 如果之後回傳值改變,則 is 會不適用 2. 個人覺得在 bool 比對, == 比 is 直觀。 就像我之前所說的,會出現這種形式 test1() == test2() 基本上都是為了追蹤各個狀態是否一致, 不一致時為異常的情形。 我不知道這樣的程式碼算不算少見就是了 註1: 我回這篇文章只是因為有人問什麼情況下會有 test1() == test2() 的寫法。 註2: 請不要和我討論自定義物件,我的討論只針對 True 和 False 這兩個 singletons 物件。 有人總是誤解我的意思 ... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.165.75.36 ※ 編輯: ya790206 來自: 118.165.75.36 (05/11 10:23) ※ 編輯: ya790206 來自: 118.165.75.36 (05/11 13:30) ※ 編輯: ya790206 來自: 118.165.75.36 (05/11 13:50)

05/11 14:03, , 1F
我的文章是在解釋為何我在2933會有那個推文
05/11 14:03, 1F
文章代碼(AID): #1HZEhHVJ (Python)
文章代碼(AID): #1HZEhHVJ (Python)