千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > python詳細分析Python中運算符"=="和"is"的差別

python詳細分析Python中運算符"=="和"is"的差別

來源:千鋒教育
發布人:xqq
時間: 2023-11-11 15:00:42 1699686042

在講is和==這兩種運算符區別之前,首先要知道Python中對象包含的三個基本要素,分別是:id(身份標識)、pythontype()(數據類型)和value(值)。is和==都是對對象進行比較判斷作用的,但對對象比較判斷的內容并不相同。下面來看看具體區別在哪。

Python中比較兩個對象是否相等,一共有兩種方法,簡單來說,它們的區別如下:

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

==是比較兩個對象是否相等。

>>>a=[1,2,3]

>>>b=a

>>>bisa#a的引用復制給b,他們在內存中其實是指向了用一個對象

True

>>>b==a#當然,他們的值也是相等的

True

>>>b=a[:]#b通過a切片獲得a的部分,這里的切片操作重新分配了對象,

>>>bisa#所以指向的不是同一個對象了

False

>>>b==a#但他們的值還是相等的

True

實現原理

is比較的是兩者是否是同一個對象,所以比較的是內存地址(id是否相同)。

==是值比較。不可變對象,例如int,str,它會直接進行值比較。對于Python已知的對象,會調用他們的__eq__函數來比較。(其實已知的對象應該也是通過內置的__eq__函數來比較的)。對于自定義的對象,如果實現了__eq__函數,就會使用它比較,如果沒有實現,效果和==是一樣的。

對象緩存機制

Python會對比較小的對象緩存,下次用到比較小的對象時,會去緩存區查找,如果找到,不會再開辟新的內存,而是繼續把小對象的地址賦給新的值。例子:

>>>c=1

>>>d=1

>>>print(cisd)

True

>>>1000is10**3

False

>>>1000==10**3

True

通過計算得到的賦值,不會使用緩存區。從第一個代碼示例中可以看出。

對于字符串,你可以通過使用intern函數強制使用緩存區

以上內容為大家介紹了python培訓之詳細分析Python中運算符"=="和"is"的差別,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。

tags: python培訓
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
久久亚洲中文字幕精品一区四,亚洲日本另类欧美一区二区,久久久久久久这里只有免费费精品,高清国产激情视频在线观看
亚洲中文精品视频在线 | 亚洲欧美日韩在线不卡 | 五月天桃色国产麻豆 | 亚洲精品成人AV在线 | 亚洲精品日产精品乱码不卡 | 五月婷婷久亚洲有码中文字幕 |