Re: [翻譯] Google 建議的 Python 風格指南 14
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
05/11 14:03, 1F
討論串 (同標題文章)