is是看兩個標識符是不是引用自一個對象,利用id()函數就可以看的很清楚,id可以理解為得到變量的內存地址
創(chuàng)新互聯建站成立與2013年,先為石龍等服務建站,石龍等地企業(yè),進行企業(yè)商務咨詢服務。為石龍企業(yè)網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。
而==是value判斷,不同類型不一樣,如:
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的否定,意義是一樣的。
is是比較對象的id,而==僅比較對象的值,看下面的例子
似乎PYTHON在給不同的變量賦相同整數值小于等于256時,是用了同一個ID的。大于等于257的整數時,用的是不同的id,這時候就有區(qū)別了。
python中都是地址, is的作用是查看兩個變量的地址是否一致,也就是是否指向一個數,而不是相等的數,即
a is b 等價于 id(a) == id(b)
20是常量,存放它時在一個作用域內所有的id都是一樣的, 所以第一個是True
列表是可以修改的變量,a 和b 被創(chuàng)建在了不同的地址,所以a 和 b不是指向同一個地址,可以通過print(id(a))查看它們的不同
在Python中一切都是對象。
Python中對象包含的三個基本要素,分別是:id(身份標識)、type(數據類型)和value(值)。對象之間比較是否相等可以用==,也可以用is。
is和==都是對對象進行比較判斷作用的,但對對象比較判斷的內容并不相同。下面來看看具體區(qū)別在哪?
is比較的是兩個對象的id值是否相等,也就是比較兩個對象是否為同一個實例對象,是否指向同一個內存地址。
==比較的是兩個對象的內容是否相等,默認會調用對象的__eq__()方法。
以下代碼在Python3.5下測試通過。
==比較操作符和is同一性運算符區(qū)別
==是python標準操作符中的比較操作符,用來比較判斷兩個對象的value(值)是否相等。
代碼1:
a = [1, 2, 3]
b = a
b is a
True
b == a
True
b = a[:]
b is a
False
b == a
True
解釋一下為什么?is也被叫做同一性運算符,也就是id是否相同??聪旅娲a, a和b變量的id不同, 所以b==a是True, b is a 是False.
代碼2:
id(a)
4364243328
id(b)
4364202696
哪些情況下is和==結果是完全相同的?
代碼3:
a = 256
b = 256
a is b
True
a == b
True
a = 1000
b = 10**3
a == b
True
a is b
False
結論:數字類型不完全相同。
為什么256時相同, 而1000時不同?
因為出于對性能的考慮,Python內部做了很多的優(yōu)化工作,對于整數對象,Python把一些頻繁使用的整數對象緩存起來,保存到一個叫small_ints的鏈表中,在Python的整個生命周期內,任何需要引用這些整數對象的地方,都不再重新創(chuàng)建新的對象,而是直接引用緩存中的對象。Python把這些可能頻繁使用的整數對象規(guī)定在范圍[-5, 256]之間的小對象放在small_ints中,但凡是需要用些小整數時,就從這里面取,不再去臨時創(chuàng)建新的對象。
代碼4:
c = 'pythontab.com'
d = 'pythontab.com'
c is d
False
c == d
True
c = 'pythontabcom'
d = 'pythontabcom'
c is c
True
c == d
True
結論:字符串類型不完全相同。這個和解釋器實現有關。
代碼5:
a = (1,2,3) #a和b為元組類型
b = (1,2,3)
a is b
False
a = [1,2,3] #a和b為list類型
b = [1,2,3]
a is b
False
a = {'python':100,'com':1} #a和b為dict類型
b = {'python':100,'com':1}
a is b
False
a = set([1,2,3])#a和b為set類型
b = set([1,2,3])
a is b
False
結論
當變量是數字、字符串、元組,列表,字典時,is和==都不相同, 不能互換使用!當比較值時,要使用==,比較是否是同一個內存地址時應該使用is。當然,開發(fā)中比較值的情況比較多。
Python中的對象包含三要素:id、type、value
其中id用來唯一標識一個對象,type標識對象的類型,value是對象的值
is判斷的是a對象是否就是b對象,是通過id來判斷的
==判斷的是a對象的值是否和b對象的值相等,是通過value來判斷的
如下代碼或許可以幫助你理解。
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
元組 字符串 都是同一個內存地址
is 是比較兩個引用是否指向了同一個對象(地址引用比較)。
== 是比較兩個對象是否相等。(比較的數值)
本文題目:is函數在python中,is == python
URL網址:http://muchs.cn/article6/hcihog.html
成都網站建設公司_創(chuàng)新互聯,為您提供品牌網站設計、App開發(fā)、網站營銷、做網站、網站排名、虛擬主機
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯