程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

【Python 】python 中 is 和 == 的區別

編輯:Python

文章目錄

  • 一、 is 和 == 同是比較相等,有何區別?
    • 1. Python 對象的三個基本要素
    • 2. is 和 == 比較的內容不相同
      • (1) == 比較值是否相等
      • (2) is 比較 id 是否相等
  • 二、總結
  • 參考鏈接


一、 is 和 == 同是比較相等,有何區別?

1. Python 對象的三個基本要素

在講 is 和 == 這兩種運算符區別之前,首先要知道 Python 中對象包含的三個基本要素,分別是:id(身份標識)、type(數據類型)和value(值)

2. is 和 == 比較的內容不相同

is 和 == 都是對對象進行比較判斷作用的,但對對象比較判斷的內容並不相同。下面來看看具體區別在哪。

== 比較操作符is 同一性運算符的區別如下。

(1) == 比較值是否相等

== 是 python 標准操作符中的比較操作符,用來比較判斷兩個對象的 value(值) 是否相等.

例:

a = 'cheesezh'
b = 'cheesezh'
print(a == b)

輸出結果:

True

(2) is 比較 id 是否相等

is 也被叫做同一性運算符,這個運算符比較判斷的是對象間的 唯一身份標識,也就是 id 是否相同。

例1:

>>> x = y = [4,5,6]
>>> z = [4,5,6]
>>> x == y
True
>>> x == z
True
>>> x is y
True
>>> x is z
False
>>>
>>> print id(x)
3075326572
>>> print id(y)
3075326572
>>> print id(z)
3075328140

例2:is 的判斷結果和數據類型有關

>>> a = 1 #a和b為數值類型
>>> b = 1
>>> a is b
True
>>> id(a)
14318944
>>> id(b)
14318944
>>> a = 'cheesezh' #a和b為字符串類型
>>> b = 'cheesezh'
>>> a is b
True
>>> id(a)
42111872
>>> id(b)
42111872
>>> a = (1,2,3) #a和b為元組類型
>>> b = (1,2,3)
>>> a is b
False
>>> id(a)
15001280
>>> id(b)
14790408
>>> a = [1,2,3] #a和b為list類型
>>> b = [1,2,3]
>>> a is b
False
>>> id(a)
42091624
>>> id(b)
42082016
>>> a = {
'cheese':1,'zh':2} #a和b為dict類型
>>> b = {
'cheese':1,'zh':2}
>>> a is b
False
>>> id(a)
42101616
>>> id(b)
42098736
>>> a = set([1,2,3])#a和b為set類型
>>> b = set([1,2,3])
>>> a is b
False
>>> id(a)
14819976
>>> id(b)
14822256

總結:

通過例2可看出,當 a 和 b 值相同時,只有當他們是 數值型字符串型 的情況下,a is b才為True;當 a 和 b 是 tuple,list,dict 或 set 型時,a is b 為False。

其他:

python 的 6 個基本數據類型

  • 不可變數據(3個):Number(數字)、String(字符串)、Tuple(元組)。
  • 可變數據(3個):List(列表)、Dictionary(字典)、Set(集合)。

二、總結

is 和 == 都可以進行對象比較判斷作用的,但對對象比較判斷的內容並不相同:

  • == 比較的是兩個對象的是否相等,默認會調用對象的 eq 方法,== 是python標准操作符中的比較操作符,用來比較判斷兩個對象的值是否相等。

  • is 比較的是兩個對象的 id 是否相等,也就是比較兩個對象是否為同一個實例對象,是否指向同一個內存地址。


參考鏈接

  1. Python中is和==的區別
  2. 說說Python 中 is 和 == 的區別?

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved