国产一区二区精品-国产一区二区精品久-国产一区二区精品久久-国产一区二区精品久久91-免费毛片播放-免费毛片基地

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > python3 中 and 和 or 運算規律

python3 中 and 和 or 運算規律

來源:千鋒教育
發布人:xqq
時間: 2023-11-05 21:03:49 1699189429

一、包含一個邏輯運算符

首先從基本的概念著手,python中哪些對象會被當成False呢?而哪些又是True呢?

在Python中,None、任何數值類型中的0、空字符串“”、空元組()、空列表[]、空字典{}都被當作False,還有自定義類型,如果實現了__nonzero__()或__len__()方法且方法返回0或False,則其實例也被當作False,其他對象均為True。

下面是最簡單的邏輯運算:這里1,2都是Ture;0,‘’都是False

1and2==>21or2==>1

1and0==>01or0==>1

0and1==>00or1==>1

0and''==>00or''==>''

總結:

or從左到右,返回第一個為真的值,都為假返回后一個值

and從左到右,若所有值均為真,則返回后一個值,有一個假的值,則返回第一個假的值

二、包含兩個及以上的邏輯運算符

邏輯運算符and/or一旦不止一個,其運算規則的核心思想就是短路邏輯。好的,那我們就來了解一下短路思想:

表達式從左至右運算,若or的左側邏輯值為True,則短路or后所有的表達式(不管是and還是or),直接輸出or左側表達式。

表達式從左至右運算,若and的左側邏輯值為False,則短路其后所有and表達式,直到有or出現,輸出and左側表達式到or的左側,參與接下來的邏輯運算。

若or的左側為False,或者and的左側為True則不能使用短路邏輯。

就讓我們從簡單的開始,假設全是and語句或者全是or語句:

example1

defa():

print('A')

return[]

defb():

print('B')

return1

defc():

print('C')

return1

defd():

print('D')

return[]

defe():

print('E')

return1

ifa()andb()andc()andd()ande():

print('ok')

a()為假,其后均為and語句,全部短路,最終只返回a()的表達式。記住,所有被短路的表達式均不會被輸出。所以,此處僅僅打印A。

example2

defa():

print('A')

return1

defb():

print('B')

return1

defc():

print('C')

return[]

defd():

print('D')

return1

defe():

print('E')

return1

ifa()andb()andc()andd()ande():

print('ok')

python從左至右先執行a(),a()返回的邏輯值為True,后面是and語句,所以不能短路其后,繼續與b()進行邏輯運算,a()andb()輸出b()的邏輯值True,接著與c()進行邏輯運算,b()andc()輸出c()的邏輯值False,而其后均為and語句,則全部短路,最終只打印了ABC。

example3

defa():

print('A')

return1

defb():

print('B')

return1

defc():

print('C')

return[]

defd():

print('D')

return1

defe():

print('E')

return[]

ifa()orb()orc()ord()ore():

print('ok')

a()的邏輯值為True,其后均為or語句,全部短路,最終只打印了A,而if語句為True,所以還要打印一個ok。

example4

defa():

print('A')

return[]

defb():

print('B')

return[]

defc():

print('C')

return1

defd():

print('D')

return[]

defe():

print('E')

return1

ifa()orb()orc()ord()ore():

print('ok')

python從左至右先執行a(),a()返回的邏輯值為False,后面是or語句,所以不能短路其后,繼續與b()進行邏輯運算,a()orb()輸出b()的邏輯值False,接著與c()進行邏輯運算,b()orc()輸出c()的邏輯值True,而其后為or語句,則全部短路,最終只打印了ABCok。

下面我們就來講一下and與or語句同時存在的情況:

example5

defa():

print('A')

return[]

defb():

print('B')

return[]

defc():

print('C')

return1

defd():

print('D')

return[]

defe():

print('E')

return1

deff():

print('F')

return1

defg():

print('G')

return[]

defh():

print('H')

return1

ifa()andb()andc()andd()ore()andf()org()andh():

print('ok')

別以為語句很長就很難,我們好好分析一下,從左至右,首先a()的邏輯值為False,其后到or語句為止有三個and語句:a()andb()andc()andd(),均被短路。只輸出a(),得到a()ore()為True,輸出e(),得e()andF()為True,輸出f(),其后接or語句,則短路其后所有。最終只打印了AEFok。(結合上面的三點,慢慢分析)

三.三元運算操作符

在python2.5之前,python是沒有三元操作符的,GuidoVanRossum認為它并不能幫助python更加簡潔,但是那些習慣了c、c++和java編程的程序員卻嘗試著用and或者or來模擬出三元操作符,而這利用的就是python的短路邏輯。

三元運算操作符bool?a:b,若bool為真則a,否則為b。

轉化為python語言為:

boolandaorb

如何理解呢?首先a,b都為真,這是默認的。如果bool為真,則boolanda為真,輸出a,短路b。如果bool為假,短路a,直接boolorb,輸出b。

換一種更簡單的寫法:

returnaifboolelseb

以上內容為大家介紹了python3中and和or運算規律,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。http://www.kei0345678.cn/

tags: python培訓
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT