Python的and和or的返回值

一直以來,我覺得python中andor的返回值是TrueFalsepython

看 《Dive into Python》這本書時,發現他們並不返回布爾值,而是返回他們實際進行比較的值之一。linux

and

根據本身已經掌握的知識,設想下以下代碼的運算結果:bash

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

根據python的定義,在沒有看這部份內容以前,我認爲答案分別爲TrueFalseTrue。其實運行以後才發現應該是這樣的:code

Python 2.7.13+ (default, Jul 19 2017, 18:15:03)
[GCC 6.4.0 20170704] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 'a' and 'b'
'b'
>>> '' and 'b'
''
>>> 'a' and 'b' and 'c'
'c'
>>>

緣由以下:orm

  1. and運算時,從左到右演算表達式的值。0, '', [], {}, None在布爾表達式環境下爲假,其餘任何東西都爲真
  2. 若是and運算中,全部的值都爲真,那麼and返回最後一個值。如:'a' and 'b'
  3. 若是某個值爲假,那麼and當即返回該假值(短路運算),如:'' and 'b'

or

相似的。or的規則以下:get

  1. 從左到右演算
  2. 若是有一個值爲真,當即返回該值
  3. 全部全部的值都爲假,返回最後一個假值

本文做者: Yarving Liu
本文連接: http://yarving.historytale.co...
版權聲明: 本博客全部文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明出處!博客

相關文章
相關標籤/搜索