今天開始學Python(and 和 or 運算)

在Python 中,and 和 or 執行布爾邏輯演算

但是它們並不返回布爾值,而是返回它們實際進行比較的值之一


1. and

使用 and 時,在布爾環境中從左到右演算表達式的值。

如果布爾環境中的所有值都爲真,那麼 and 返回最後一個值。

否則返回第一個假的值

>>> 'a' and 'b'
'b'
>>> '' and 'b'
''
>>> 'a' and 'b' and 'c'
'c'

2. or

使用 or 時,在布爾環境中從左到右演算表達式的值。

如果布爾環境中的所有值都爲假,那麼 or 返回最後一個值。

否則返回第一個真的值

>>> 'a' or 'b'
'a'
>>> '' or 'b'
'b'
>>> '' or () or {}
{}

3 and-or使用技巧

>>> a = "first"
>>> b = "second"
>>> 1 and a or b 
'first'
>>> 0 and a or b 
'second'

看起來是不是很像C語言中的 bool?a:b的三目運算

但是, 這其實和bool?a:b其實很不同, 如果a值爲假時, 表達式就不會按你希望的方式運行

>>> a = ""
>>> b = "second"
>>> 1 and a or b        
'second'
要怎樣安全的使用這個技巧呢?

>>> a = ""
>>> b = "second"
>>> (1 and [a] or [b])[0]
""
由於 [a] 是一個非空列表,所以它決不會爲假。即使 a 是 0 或者 '' "或者其
它假值,列表 [a] 也爲真,因爲它有一個元素。

也許有些人會困惑, if語句可以解決的問題,那爲什麼要經歷這些麻煩事呢?

在很多情況下,你要在兩個常量值中進行選擇,由於你知道 a 的值總是爲真,

所以你可以使用這種較爲簡單的語法而且不用擔心。

對於使用更爲複雜的安全形式,依然有很好的理由要求這樣做。

例如,在 Python 語言的某些情況下 if 語句是不允許使用的,比如在 lambda 函數中。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章