is函數在python中,is == python

python的is和is not運算符是干什么用的

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的否定,意義是一樣的。

Python中is和==的區(qū)別

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

似乎PYTHON在給不同的變量賦相同整數值小于等于256時,是用了同一個ID的。大于等于257的整數時,用的是不同的id,這時候就有區(qū)別了。

Python is 用法問題為 什么會有不同結果?

python中都是地址, is的作用是查看兩個變量的地址是否一致,也就是是否指向一個數,而不是相等的數,即

a is b 等價于 id(a) == id(b)

20是常量,存放它時在一個作用域內所有的id都是一樣的, 所以第一個是True

列表是可以修改的變量,a 和b 被創(chuàng)建在了不同的地址,所以a 和 b不是指向同一個地址,可以通過print(id(a))查看它們的不同

軟件測試中,python中的 ==和 is 之間的區(qū)別?

在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 中is和= = 的區(qū)別是什么?

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

Python中 ==,is的使用

元組 字符串 都是同一個內存地址

is 是比較兩個引用是否指向了同一個對象(地址引用比較)。

== 是比較兩個對象是否相等。(比較的數值)

本文題目:is函數在python中,is == python
URL網址:http://muchs.cn/article6/hcihog.html

成都網站建設公司_創(chuàng)新互聯,為您提供品牌網站設計、App開發(fā)網站營銷做網站、網站排名、虛擬主機

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

手機網站建設