在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 檔案的組 ...