is是比較對(duì)象的id,而==僅比較對(duì)象的值,看下面的例子

成都創(chuàng)新互聯(lián)公司專(zhuān)注于周口網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供周口營(yíng)銷(xiāo)型網(wǎng)站建設(shè),周口網(wǎng)站制作、周口網(wǎng)頁(yè)設(shè)計(jì)、周口網(wǎng)站官網(wǎng)定制、小程序定制開(kāi)發(fā)服務(wù),打造周口網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供周口網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。
似乎PYTHON在給不同的變量賦相同整數(shù)值小于等于256時(shí),是用了同一個(gè)ID的。大于等于257的整數(shù)時(shí),用的是不同的id,這時(shí)候就有區(qū)別了。
Python中的對(duì)象包含三要素:id、type、value
其中id用來(lái)唯一標(biāo)識(shí)一個(gè)對(duì)象,type標(biāo)識(shí)對(duì)象的類(lèi)型,value是對(duì)象的值
is判斷的是a對(duì)象是否就是b對(duì)象,是通過(guò)id來(lái)判斷的
==判斷的是a對(duì)象的值是否和b對(duì)象的值相等,是通過(guò)value來(lái)判斷的
如下代碼或許可以幫助你理解。
a = 1
b = 1.0
a is b
False
a == b
True
id(a)
12777000
id(b)
14986000
a = 1
b = 1
a is b
True
a == b
True
id(a)
12777000
id(b)
12777000
元組 字符串 都是同一個(gè)內(nèi)存地址
is 是比較兩個(gè)引用是否指向了同一個(gè)對(duì)象(地址引用比較)。
== 是比較兩個(gè)對(duì)象是否相等。(比較的數(shù)值)
is是看兩個(gè)標(biāo)識(shí)符是不是引用自一個(gè)對(duì)象,利用id()函數(shù)就可以看的很清楚,id可以理解為得到變量的內(nèi)存地址
而==是value判斷,不同類(lèi)型不一樣,如:
a = 3
b = 3
a == b
True
id(a)
11163864
id(b)
11163864
a is b
True
b is a
True
a = [1,3]
b = [1,3]
a == b
True
a is b
False
id(a)
11794392
id(b)
11813392
is not 就是is的否定,意義是一樣的。
樓上的答案我認(rèn)為是不正確的,is和==的語(yǔ)義是不同的
== 的語(yǔ)義是比較兩個(gè)對(duì)象是否相等,至于比較的方法,是可以進(jìn)行重載和多態(tài)的.
而is操作符的語(yǔ)義是比較兩個(gè)對(duì)象是否同一個(gè)對(duì)象,也就是兩個(gè)對(duì)象在內(nèi)存中的地址是否相同,是精確匹配,不能進(jìn)行重載和多態(tài).
而operator.is_只是實(shí)現(xiàn)了is的語(yǔ)義而已
自己也可以寫(xiě)一個(gè)is_
is_ = lambda a ,b : a is b
is:比較的是兩個(gè)對(duì)象的id值是否相等,也就是比較兩對(duì)象是否為同一個(gè)實(shí)例對(duì)象,是否指向同一個(gè)內(nèi)存地址;
==:比較的兩個(gè)對(duì)象的內(nèi)容/值是否相等,默認(rèn)會(huì)調(diào)用對(duì)象的eq()方法。
新聞名稱(chēng):python中is函數(shù),python中isna函數(shù)
文章源于:http://chinadenli.net/article35/dsgpipi.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、關(guān)鍵詞優(yōu)化、網(wǎng)站導(dǎo)航、全網(wǎng)營(yíng)銷(xiāo)推廣、定制開(kāi)發(fā)、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容