Python中and和or如何使用

2022-09-26 11:15:13 字數 1928 閱讀 9827

python中and、or是python中的邏輯運算子,它們的用法如何呢?

and:

在python 中,and 和 or 執行布林邏輯演算,如你所期待的一樣,但是它們並不返回布林值;而是,返回它們實際進行比較的值之一。

**如下:

>>> 'a' and '程式設計客棧b' 'b'

>>> '' and 'b' ''

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

'c'在布林上下文中從左到右演算表示式的值,如果布林上下文中的所有值都為真,那麼 and 返回最後乙個值。

如果布林上下文中的某個值為假,則 and 返回第乙個假值

or:**如下:

>>> 'a' or 'b' 'a'

>>> '' or 'b' 'b'

>>> '' or or {}

{} >>> 0 or 'a' or 'c'

'awww.cppcns.com'

使用 or 時,在布林上下文中從左到右演算值,就像 and 一樣。如果有乙個值為真,or 立刻返回該值

如果所有的值都為假,or 返回最後乙個假值

注意 or 在布林上下文中會一直進行表示式演算直到找到第乙個真值,然後就會忽略剩餘的比較值

and-or:

and-or 結合了前面的兩種語法,推理即可。

>>> a='first'

>>> b='second'

>>> 1 and a or b 'first'

>>> (1 and a) or b 'first'

>>> 0 and 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' 演算值為 fal程式設計客棧se,然後 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')

#''例項補充:

>>> a ='first'

>>> b ='second'

>>>1and a or b # 等價於 bool = true時的情況

'first'

>>>0and a or b # 等價於 bool = false時的情況

'second'

>>> a ='程式設計客棧'

>>>1and a or b # a為假時,則出現問題

'second'

>>>(1and[a]or[b])[0]# 安全用法,因為[a]不可能為假,至少有乙個元素

''>>>

Python中如何使用 args和 kwargs

python中如何使用 args和 kwargs,或者說,在python中如何使用可變長引數列表。這是一種特殊的語法,在函式定義中使用 args和kwargs傳遞可變長引數.args用作傳遞非命名鍵值可變長引數列表 位置引數 kwargs用作傳遞鍵值可變長引數列表 下面的例子傳遞乙個位置引數以及兩個...

python如何讀 python中如何讀入資料

python的文字處理是經常碰到的乙個問題,python的文字檔案的內容讀取中,有三類方法 read readline readlines 這三種方法各有利弊,下面逐一介紹其使用方法和利弊。read read 是最簡單的一種方法,一次性讀取檔案的所有內容放在乙個大字串中,即存在記憶體中file ob...

python中如何表示 python中時間如何表示

python中有3種不同的時間表示法 1.時間戳 timestamp 是從1970年1月1日0時0分0秒開始的秒數 2.struct time 包含9個元素的tuple 3.format time 已經格式化好便於閱讀的時間 使用時間需要使用time模組 import time引入time模組 ti...