久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁  >  技術(shù)干貨  > python3 中 and 和 or 運(yùn)算規(guī)律

python3 中 and 和 or 運(yùn)算規(guī)律

來源:千鋒教育
發(fā)布人:xqq
時(shí)間: 2023-11-05 21:03:49 1699189429

一、包含一個(gè)邏輯運(yùn)算符

首先從基本的概念著手,python中哪些對(duì)象會(huì)被當(dāng)成False呢?而哪些又是True呢?

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

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

1and2==>21or2==>1

1and0==>01or0==>1

0and1==>00or1==>1

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

總結(jié):

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

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

二、包含兩個(gè)及以上的邏輯運(yùn)算符

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

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

表達(dá)式從左至右運(yùn)算,若and的左側(cè)邏輯值為False,則短路其后所有and表達(dá)式,直到有or出現(xiàn),輸出and左側(cè)表達(dá)式到or的左側(cè),參與接下來的邏輯運(yùn)算。

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

就讓我們從簡單的開始,假設(shè)全是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()的表達(dá)式。記住,所有被短路的表達(dá)式均不會(huì)被輸出。所以,此處僅僅打印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從左至右先執(zhí)行a(),a()返回的邏輯值為True,后面是and語句,所以不能短路其后,繼續(xù)與b()進(jìn)行邏輯運(yùn)算,a()andb()輸出b()的邏輯值True,接著與c()進(jìn)行邏輯運(yùn)算,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,所以還要打印一個(gè)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從左至右先執(zhí)行a(),a()返回的邏輯值為False,后面是or語句,所以不能短路其后,繼續(xù)與b()進(jìn)行邏輯運(yùn)算,a()orb()輸出b()的邏輯值False,接著與c()進(jìn)行邏輯運(yùn)算,b()orc()輸出c()的邏輯值True,而其后為or語句,則全部短路,最終只打印了ABCok。

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

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語句為止有三個(gè)and語句:a()andb()andc()andd(),均被短路。只輸出a(),得到a()ore()為True,輸出e(),得e()andF()為True,輸出f(),其后接or語句,則短路其后所有。最終只打印了AEFok。(結(jié)合上面的三點(diǎn),慢慢分析)

三.三元運(yùn)算操作符

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

三元運(yùn)算操作符bool?a:b,若bool為真則a,否則為b。

轉(zhuǎn)化為python語言為:

boolandaorb

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

換一種更簡單的寫法:

returnaifboolelseb

以上內(nèi)容為大家介紹了python3中and和or運(yùn)算規(guī)律,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。http://m.2667701.com/

聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
Python標(biāo)準(zhǔn)庫主要有哪些功能?

眾所周知,Python標(biāo)準(zhǔn)庫非常龐大,可以幫助處理各種各樣的工作,從而提高效率、節(jié)省成本。那么你對(duì)Python標(biāo)準(zhǔn)庫了解多少呢?你知道Python標(biāo)準(zhǔn)庫...詳情>>

2023-11-05 23:38:38
用Python編寫代碼時(shí)有哪些有用的技巧?

不知道吧,使用Python編寫代碼時(shí),有一些小技巧可以大幅度提升我們的工作效率和開發(fā)效率,而且這些技巧很簡單,只需要在編寫代碼時(shí)稍微注意一下...詳情>>

2023-11-05 22:48:14
python基礎(chǔ)入門之設(shè)計(jì)URL方案

DjangoURL分發(fā)系統(tǒng)使用了正則表達(dá)式配置模塊,它可以將URL字符串模式映射為Python方法views。這個(gè)系統(tǒng)允許URL與底層代碼完全脫節(jié),從而實(shí)現(xiàn)最大...詳情>>

2023-11-05 22:37:26
Python的編程語言

一、Python編程語言的優(yōu)點(diǎn)有哪些?1.Python是一種腳本語言,寫好了就可以直接運(yùn)行,省去了編譯鏈接的麻煩,對(duì)于需要多動(dòng)手實(shí)踐的初學(xué)者而言,也...詳情>>

2023-11-05 22:33:50
python五大異常處理機(jī)制

??我們明白了什么是異常后,那么發(fā)現(xiàn)異常后怎么處理,便是我們接下來要解決的問題。這里將處理異常的方式總結(jié)為五種。1、默認(rèn)異常處理機(jī)制“...詳情>>

2023-11-05 22:15:50