pythonのandとor

4472 ワード

pythonでandとorが返す値はTrueとfalseほど簡単ではありません.彼らはc++の中の&&と少し似ているように見えますが.andとorを知る前にpythonのTrueとFalseを理解します.
pythonでは,0,’,[],(),{},Noneが偽であり,他のものはすべて真である.OK、その前提で.このような例を見てみましょう.
>>> 'a' and 'b'  
'b'  
>>> '' and 'b'  
''  
>>> 'a' and 'b' and 'c'  
'c' 

andに対して偽値がなければ最後の真値を返し,偽値があれば最初の偽値を返すという法則を大まかにまとめることができる.
>>> 'a' or 'b'  
'a'  
>>> '' or 'b'  
'b'  
>>> '' or [] or{}  
{}  

orの場合、真の値がない場合は最後の偽の値を返し、真の値がある場合は最初の真の値を返します.
これを知るとc言語の三目演算子操作をシミュレートできるa ? b : c
>>> a = "haha"
>>> b = "hehe" 
>>> 1 and a or b 
'haha'
>>> 0 and a or b 
'hehe'

しかし、このようにすると、次のような問題が発生します.
>>> a = ""
>>> b = "hehe" 
>>> 1 and a or b 
'hehe'

解決策は以下の通り
(1 and [a] or [b])[0]

解決策としては、['']について、上の式の括弧の中の値が[''][''][0]の結果が''であることが分かる.