——《python學習手冊》讀書筆記
真值測試
在python中:
任何非零數字或非空物件都為真
數字零、空物件以及特殊物件none都被認作是假
比較和相等測試會遞迴地應用在資料結構中
比較和相等測試會返回true或false(1和0的特殊版本)
布林and和or運算子會返回真或假的操作物件
python中有三種布林表示式運算子:
x and y
x or y
not x
值比較會返回true或false作為其真值結果(其實是整數1和0的特殊版本,列印時不同但其實完全一樣)。接下來看一些例子:
2<3,3<2
(true,
false)
另一方面,and 和 or運算子總會返回物件
(不是運算子左側的物件就是右側的物件),而不是值true或false。如果我們在if或其他語句中測試其結果,總會如預期的結果那樣(每個物件的本質上不是真就是假)。
>>>2or3,3or2
(2,3)
>>>or3
3>>>2and{}
>>>and{}
python中,運算是短路計算。就or測試而言,python會由左至右求算操作物件,然後返回第乙個為真的操作物件,在找到的第乙個真值運算元的地方停止。and
運算也是類似。
if/else三元表示式
考慮下列語句,根據x的真值把a設成y或z。
ifx:
a= y
else:
a= z
用四行**編寫似乎太浪費了。python 2.5 引入了新的表示式格式,讓我們可以在乙個表示式中編寫出相同的結果:
a= yifxelsez
注意,python的x if y else z和c的y?x:z的順序有點不同。下面看一些例子:
a= 't'
if'spam'
else
'f'a
't'
a= 't'
ifelse
'f'a
'f'
事實上,相同的效果可以小心地用and和or運算子的結合實現,因為它們不是返回左邊的物件就是返回右邊的物件:
a= ((xandy)orz)
但有個問題:你得假定y是布林真值。如果是這樣,效果就相同。 此外,使用下列表示式也是類似的,因為bool函式會把x轉化成對應的整數1或0:
a = [z,y][bool(x)]
然而,這並不完全相同,因為這樣不會做短路運算,無論x值是什麼,總是會執行z和y。
damant
the quieter you become,the more you are able to
hear.
北京2015-7-17
python布林類入門 Python的布林型別
前面我們了解到,布林型別是python的基礎資料型別,布林型別只有true和false兩種值,本節課我們學習布林型別的集中運算。與運算只有兩個布林值都為 true 時,計算結果才為 true。true and true true true and false false false and true...
Ruby系列 布林表示式
ruby中的布林運算子有 和 和其他語言不一樣的是 和 運算不是返回true或false,而是某個運算元。操作符先求解它們的第乙個運算元,如果為false,那麼返回它們的第乙個運算元,否則,返回第二個運算元。操作符先求解它們的第乙個運算元,如果為true,那麼返回它們的第乙個運算元,否則,返回第二個...
Python中布林型別
我們已經了解了python支援布林型別的資料,布林型別只有true和false兩種值,但是布林型別有以下幾種運算 與運算 只有兩個布林值都為 true 時,計算結果才為 true。true and true true true and false false false and true false...