日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python布尔测试对象_python布尔类型和逻辑运算

發(fā)布時(shí)間:2025/3/11 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python布尔测试对象_python布尔类型和逻辑运算 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

布爾類型

python中True表示真,False表示假,它們是布爾類型:1

2>>>?type(True)

在python中,bool的True和False是數(shù)值1和0的字符串表示格式,實(shí)際上bool類型是int類型的一個(gè)子類。1

2>>>?bool.__bases__(,)

因?yàn)門rue/False是數(shù)值1和0的另一種表示方式,它們可以直接參與數(shù)值運(yùn)算。1

2

3

4>>>?True?+?23>>>?False?+?2?-?11

True/False的各種形式

雖然True代表1,False代表0。但實(shí)際上,python中的任何一個(gè)數(shù)據(jù)對(duì)象要么是True,要么是False,所以可以直接在布爾測(cè)試的表達(dá)式中使用,而并非一定要去大小比較、通過函數(shù)測(cè)試等等。比如:1

2if?"a":while?1:

可以通過bool()函數(shù)來測(cè)試數(shù)據(jù)對(duì)象、表達(dá)式是True還是False。例如:1

2

3

4

5

6

7

8>>>?bool(0)

False>>>?bool(1)

True>>>?bool('a')

True>>>?bool('')

False

那么,哪些類型的數(shù)據(jù)是True,哪些類型的數(shù)據(jù)是False?整數(shù)值0、浮點(diǎn)數(shù)值0.0等、空字符串都為假

None為假

空數(shù)據(jù)對(duì)象都是假,比如[]、{}、()等元組比較特殊,如果元組中有元素,但全是為假的元素,則也為假

以下是各種內(nèi)置數(shù)據(jù)類型的一些真、假示例:1

2

3

4

5

6

7

8

9??????????True?????????????????False

----------------------------------number:???1、1.1???????????????0、0.0string:???'a'??????????????????''None:??????????????????????????Nonelist:?????['a']、[1]???????????[]

[0]、['']、[None]

Set/Dict:?{'a'}????????????????{}tuple:????('a')、(1)???????????()、('')、(0)、(None)

看幾個(gè)示例:1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17>>>?bool(1),?bool(0)

(True,?False)>>>?bool('a'),?bool('')

(True,?False)>>>?bool(None)False>>>?bool(['a']),?bool([1]),?bool([]),?bool(['']),?bool([()])

(True,?True,?False,?True,?True)>>>?bool({'a'}),?bool({}),?bool({''})

(True,?False,?True)>>>?bool(('a')),?bool(()),?bool(('')),?bool((0)),?bool(({}))

(True,?False,?False,?False,?False)

None

None為假,它不是表示對(duì)象為空,也不是表示對(duì)象未定義。它自身就是一個(gè)實(shí)實(shí)在在的數(shù)據(jù)對(duì)象,在內(nèi)存中有自己的內(nèi)存地址。可以認(rèn)為,None是一種特殊的數(shù)據(jù)對(duì)象,像數(shù)值1、字符串'a'一樣,只不過內(nèi)存中這個(gè)數(shù)據(jù)對(duì)象里面存儲(chǔ)的數(shù)據(jù)是我們不得而知的,但它永遠(yuǎn)表示為False。

在Python中,沒有顯式定義return語(yǔ)句的函數(shù)、方法并不意味著沒有返回值,它們的默認(rèn)返回值是None。比如print()函數(shù):1

2

3

4>>>?a=print("aa")aa>>>?print(a)None

None有時(shí)候有些小技巧。比如,訪問或設(shè)置超出列表長(zhǎng)度的元素時(shí)會(huì)報(bào)錯(cuò):1

2

3

4

5

6

7

8

9>>>?S?=?[]>>>?S[1]

Traceback?(most?recent?call?last):

File?"",?line?1,?in?IndexError:?list?index?out?of?range>>>?S[1]?=?2Traceback?(most?recent?call?last):

File?"",?line?1,?in?IndexError:?list?assignment?index?out?of?range

但是可以預(yù)先將某些數(shù)量的None對(duì)象填充到列表中去,這樣列表就具備了元素,盡管它們都是None對(duì)象。

例如,向列表中填充10個(gè)None元素:1

2

3

4

5

6

7>>>?S?=?[None]?*?10>>>?S

[None,?None,?None,?None,?None,?None,?None,?None,?None,?None]>>>?S[1]>>>?S[1]?=?2>>>?S

[None,?2,?None,?None,?None,?None,?None,?None,?None,?None]

當(dāng)然,將None換成其它數(shù)據(jù)也一樣可以,比如0,但用None來填充,一看就知道是為了填充而填充的占位符,不是實(shí)際要操作的元素。

另外,預(yù)先填充并不能限制列表的長(zhǎng)度,可以繼續(xù)向這個(gè)列表中append()新元素。

邏輯運(yùn)算:and、or、not

python中只支持字符形式的and、or、not邏輯運(yùn)算,不支持符號(hào)類型的&&、||、!。X and Y:X和Y都為真時(shí),返回真

X or Y:X或Y為真,返回真

not X:X真假取反

需要注意,and和or會(huì)短路運(yùn)算(即只要能確定真假關(guān)系,就立即停止運(yùn)算),并返回運(yùn)算的結(jié)果(不是返回True/False,而是返回表達(dá)式的運(yùn)算結(jié)果)。而not運(yùn)算是返回True/False的。

例如,and的邏輯運(yùn)算:1

2

3

4

5

6>>>?2?and?3,?3?and?2(3,?2)>>>?[]?and?{}

[]>>>?3?and?[]

[]

上面第一行and測(cè)試,因?yàn)閍nd左邊的都是True,所以必須得評(píng)估and右邊的值,那么不管and右邊是True還是False,都會(huì)返回and右邊的值,比如第一行and測(cè)試,第三行and測(cè)試。第二行and測(cè)試中,因?yàn)閍nd左邊為False,所以直接能確定為False,所以直接短路返回[]。

再看or邏輯運(yùn)算:1

2

3

4

5

6>>>?2?or?3,3?or?2(2,?3)>>>?[]?or?33>>>?[]?or?{}

{}

上面第一行or測(cè)試,因?yàn)閛r左邊已經(jīng)能直接確定為True,所以直接短路返回or左邊的值。第二行和第三行or測(cè)試,因?yàn)閛r左邊都為False,所以必須測(cè)試右邊的,所以不管or右邊是True還是False,都返回or右邊的值。

再次說明,and、or返回的不是True/False的布爾值,而是邏輯表達(dá)式的運(yùn)算結(jié)果。但因?yàn)閜ython中只要是數(shù)據(jù),要么是True,要么是False,所以and/or/not都可以用于真假測(cè)試,只不過and/or還可以在布爾測(cè)試的基礎(chǔ)上進(jìn)行賦值操作。

例如,如果變量a為False,就賦值為某個(gè)值,否則采用a原有的值。a?=?a?or?"hhhh"

更通用的,變量A取X、Y、Z等表達(dá)式中的一個(gè)。1

2A?=?X?or?YA?=?X?or?Y?or?Z

不僅如此,and/or還能實(shí)現(xiàn)if中選擇值的功能。例如,下面是等價(jià)的:1

2

3

4

5

6A?=?((?X?and?Y)?or?Z)if?X:

A?=?Yelse:

A?=?Z

當(dāng)然,這種用and/or實(shí)現(xiàn)邏輯的可讀性太差,能用if的當(dāng)然用if。

總結(jié)

以上是生活随笔為你收集整理的python布尔测试对象_python布尔类型和逻辑运算的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。