在看到python源碼的時候,有一句關於or的用法,當時很疑惑,以前一直認爲其用法類似與java中的"&&" 和 "||" ,返回的是boolean類型,結果當前是錯誤的,下面給大家分享一下python中的and和or關鍵字的用法。
概念描述:
空對象:None, "", [], (), {} 這些都是空對象,使用if、while等判斷是都是類似於False的情況,反之就是非空對象
1、and
# 語法:[expression1] and [expression2] # 結果組合形式: # 1、expression1<空> : 當第一個表達式爲空時,返回expression1的值,expression2不會執行; if __name__ == "__main__": print("" and "test") print(None and "test") print([] and "test") print({} and "test") print(() and "test") # 輸出:"", None, [], {}, () # 2、expression1<非空> : # 2.1、expression2<空> : 返回expression1的值 if __name__ == "__main__": print("test" and None) print("test" and "") print("test" and ()) print("test" and {}) print("test" and []) # 輸出:"", None, [], {}, () # 2.2、expression2<非空> :返回expression2的值 if __name__ == "__main__": print("test" and "testsuccess") print("test" and "OK") print("test" and (1,)) print("test" and {"test":"success"}) print("test" and [1,2]) # 輸出:"testsuccess" ,"ok", (1,),{"test":"success"},[1, 2]
2、or
# 語法:[expression1] and [expression2] # 組合形式: # 1、expression1<非空> : 當第一個表達式爲非空時,返回expression1的值。 if __name__ == "__main__": print("yes" or "ok") print((1,) or "ok") print([1, 2] or "ok") print({"name":"ok"} or "ok") # 輸出:yes、(1,), [1, 2], {"name":"ok"} # 2、expression1<空> : 當第一個表達式爲空時,返回expression2的值 if __name__ == "__main__": print("" or None) print(None or ()) print([] or {}) print(() or []) print(() or "") print("" or "yes") print(None or (1, 2)) print([] or {"test" : "success"}) print(() or [1, 2]) # 輸出:None,(), {},[] ,"", "yes", (1,2),{"test" : "success"},[1,2]
3、總結
“or”和“and”都是返回最後執行的表達式的值,使用or時,先判斷第一個表達式是否爲空,如果第一個表達式爲空,那麼纔會執行第二個表達式,從而返回第二個表達式的值;使用and時,如果第一個表達式爲空,那麼不需要執行第二個表達式,因此返回第一個表達式的值。有點類似一java中的"&&"和"||"的理念。簡單概述就是如果使用or和and時,從左到右執行表達式,如果在執行某個表達式之後,就已經可以判斷整體表達式是否爲空,是否非空,那麼之後的表達式就不會再執行。