Python and和or的特殊性質

2021-06-23 09:41:30 字數 1371 閱讀 8759

在python 中,and 和 or 執行布林邏輯演算,如你所期待的一樣。但是它們並不返回布林值,而是返回它們實際進行比較的值之一。

(類似c++裡面的&&和||的短路求值)

( 在布林環境中,0、''、、()、{}、none為假;其它任何東西都為真。但是可以在類中定義特定的方法使得類例項的演算值為假。)

and例項:

>>> 'a' and 'b'

'b'>>> '' and 'b'

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

'c'

從左到右掃瞄,返回第乙個為假的表示式值,無假值則返回最後乙個表示式值。

or例項:

>>> 'a' or 'b'

'a'>>> '' or 'b'

'b'>>> '' or or{}

{}

從左到右掃瞄,返回第乙個為真的表示式值,無真值則返回最後乙個表示式值。

and-or搭配:

[python]

>>> a = "betabin"

>>> b = "python"

>>> 1

and a or b  

'betabin'

>>> 0

and a or b  

'python'

>>> a = "betabin"

>>> b = "python"

>>> 1 and a or b

'betabin'

>>> 0 and a or b

'python'

看起來類似於於我們c++中的條件運算子(bool?a:b),是的,當a為true的時候是一樣的。但是,當a為false的時候,就明顯不同了。

如果堅持要用and-or技巧來實現條件運算子的話,可以用種安全的方法:

[python]

>>> a = ""  

>>> b = "betabin"

>>> (1

and [a] or [b])[0]  ''

>>> a = ""

>>> b = "betabin"

>>> (1 and [a] or [b])[0]

''

就是萬能的,把a為假的可能性給抹殺掉,然後通過[0]再獲得(因為要通過[0]獲得元素,所以b也得加上)。

這個and-or技巧主要在lambda中使用。

python and 和 or的用法

一 and 在python 中,and 和 or 執行布林邏輯演算,如你所期待的一樣,但是它們並不返回布林值 而是,返回它們實際進行比較的值之一。a and b b and b a and b and c c 在布林上下文中從左到右演算表示式的值,如果布林上下文中的所有值都為真,那麼 and 返回最...

通過例項解析python and和or使用方法

在python中and和or返回的值並不是true和false這麼簡單。雖然他們看上去和c 中的 和 有些相似。在了解and和or之前,我們先要了解python中的true和false。在python裡面,0 none為假,其它任何東西都為真。ok,在此前提下。看這樣乙個例子 我們大致可以總結出這樣...

umask和特殊許可權

umsk定義 是系統建立檔案預設建立的權利 永久修改umask sticky 貼上位 sgid 強制位 suid 冒險位 作用 讓特定使用者對特定檔案擁有特定許可權 檢視許可權列表內容和是否開啟 file mnt file 檔名稱 owner root 檔案的擁有者 group root 檔案的組 ...