在python 中,and 和 or 執行布林邏輯演算,如你所期待的一樣,但是它們並不返回布林值;而是,返回它們實際進行比較的值之一。
一、and:
>>
>
'a'and
'b''b'
>>
>
''and
'b'''
>>
>
'a'and
'b'and
'c''c'
在布林上下文中從左到右演算表示式的值,如果布林上下文中的所有值都為真,那麼 and 返回最後乙個值。
如果布林上下文中的某個值為假,則 and 返回第乙個假值
二、or:
>>
>
'a'or
'b''a'
>>
>
''or
'b''b'
>>
>
''or
or>>
>0or
'a'or
'c''a'
使用 or 時,在布林上下文中從左到右演算值,就像 and 一樣。如果有乙個值為真,or 立刻返回該值
如果所有的值都為假,or 返回最後乙個假值
注意 or 在布林上下文中會一直進行表示式演算直到找到第乙個真值,然後就會忽略剩餘的比較值
三、and-or:
and-or 結合了前面的兩種語法,推理即可。
>>
> a=
'first'
>>
> b=
'second'
>>
>
1and a or b
'first'
>>
>(1
and a)
or b
'first'
>>
>
0and a or b
'second'
>>
>(0
and a)
or b
'second'
>>
>
這個語法看起來類似於 c 語言中的 bool ? a : b 表示式。整個表示式從左到右進行演算,所以先進行 and 表示式的演算。 1 and 『first』 演算值為 『first』,然後 『first』 or 『second』 的演算值為 『first』。
0 and 『first』 演算值為 false,然後 0 or 『second』 演算值為 『second』。
and-or主要是用來模仿 三目運算子 bool?a:b的,即當表示式bool為真,則取a否則取b。
and-or 技巧,bool and a or b 表示式,當 a 在布林上下文中的值為假時,不會像 c 語言表示式 bool ? a : b 那樣工作。
四、安全使用and-or
>>
> a=
"">>
> b=
"second"
>>
>(1
and[a]
or[b])[
'']>>
>(1
and[a]
or[b])[
0]''>>
>
由於 [a] 是乙個非空列表,所以它決不會為假。即使 a 是 0 或者 『』 或者其它假值,列表 [a] 也為真,因為它有乙個元素。
乙個負責的程式設計師應該將 and-or 技巧封裝成乙個函式:
def
choose
(bool
,a,b)
:return
(bool
and[a]
or[b])[
0]print choose(1,
'','second'
)#''
深入分析python 排序
排序是每個開發人員都需要掌握的技能。排序是對程式本身有乙個全面的理解。不同的排序演算法很好地展示了演算法設計上如何強烈的影響程式的複雜度 執行速度和效率。今天的文章和談談大家都熟悉的各種排序使用 python 如何實現,廢話就不多說啦,開幹!選擇排序 選擇排序一般是將初始值設為初始值,再迴圈後面每個...
python 深入分析iter函式
在python中迭代物件x時會呼叫iter x 可是,iter函式還有乙個鮮為人知的用法 傳入兩個引數,使用常規的函式或任何可呼叫的物件建立迭代器。這樣使用時,第乙個引數必須是可呼叫的物件,用於不斷呼叫 沒有引數 產出各個值 第二個值是哨符,這是個標記值,當可呼叫的物件返回這個值時,觸發迭代器丟擲s...
IsPostBack深入分析
1 ispostback 介紹 ispostback是 page類有乙個 bool型別的屬性,用來判斷針對當前 form的請求是第一次還是非第一次請求。當 ispostback true時表示非第一次請求,我們稱為 postback,當 ispostback false時表示第一次請求。在 asp....