1. 程式人生 > 實用技巧 >Python基礎:詳解 a == b 和 a is b 的問題

Python基礎:詳解 a == b 和 a is b 的問題

首先我們要了解對於Python物件而言,一般存在三個屬性:type 型別, value 值 以及 地址id

    • 1 a == b , 這是一個比較運算子,用於比較兩個物件的value(值)是否相同
      相同則返回True 否則返回False
      示例:
      # 以下用於示例 a == b 用法
      >>> a = 1     # a, b 數值型別
      >>> b = 1
      >>> a == b
      True
      >>> a = 'zhaoxuan'    # a,b 字串型別
      >>> b = 'zhaoxuan'
      >>> a == b
      True
      
      >>> a = [1, 2] # a,b 列表型別 >>> b = [1, 2] >>> a == b True >>> a = 1 # a, b 數值型別 >>> b = 2 >>> a == b False >>> a = 'hello' # a,b 字串型別 >>> b = 'world' >>> a == b False >>> a = [1, 2] # a,b 列表型別 >>> b = [1, 3]
      >>> a == b False

      2 a is b , 這是一個同一性運算子。用於比較兩個物件的物理id。如果相同則返回True
      否則返回False
      示例:

      # 以下用於示意 a is b 用法:
      >>> a = -5        # a, b 數值型別
      >>> b = -5
      >>> a is b
      True
      >>> a = -6
      >>> b = -6
      >>> a is b
      False        # 下面講解
      >>> a = 256
      >>> b = 256
      >>> a is
      b True >>> a = 257 >>> b = 257 >>> a is b False # 下面講解 >>> b = 'zhaoxuan' # a, b 字串型別 >>> a = 'zhaoxuan' >>> a is b True # 簡單字串可用,下面講解 >>> id(a) 42111997 >>> id(b) 42111997 >>> a = 'wo shi zhao xuan' >>> b = 'wo shi zhao xuan' >>> a is b False # 複雜字串不可用,下面講解 >>> id(a) 2146074255200 >>> id(b) 2146074255272 >>> a = (1,2,3) # a, b 元組型別 >>> b = (1,2,3) >>> a is b False >>> id(a) 2146074256320 >>> id(b) 2146074256378 >>> a = [1,2,3] #a,b list型別 >>> b = [1,2,3] >>> a is b False >>> a = {'a':1,'b':2} #a,b dict型別 >>> b = {'a':1,'b':2} >>> a is b False >>> a = set([1,2,3]) #a,b set型別 >>> b = set([1,2,3]) >>> a is b False >>> id(a) 2146074299258 >>> id(b) 2146074299236
    • 綜上:

      • 1 數值相同時 a == b 返回True,否則返回False
      • 2 數值相同時 a is b 未必返回True
    • 總結:

      • Python為了優化效率,內建了小整數物件池和簡單字串物件池。
        小整數物件池包括[-5, 256]。這之間的小整數數值相同時在小整數物件池中屬於同一物件
        即是 a is b 返回True。簡單字串也是如此,對於其他物件則不適用

  • 整理給新手與正在學習python的朋友:
  • (Python學習書籍pdf版——————基礎-爬蟲-資料分析-機器學習-web,五大方向書籍應有盡有!現已上傳50本,持續更新中)
  • (Python學習教程———————專案實戰-專案原始碼-python環境搭建必要安裝檔案,正在整理更新中)
  • 花了挺長時間去辦這件事情的,需要的點選我主頁就能找到這篇文章,或者直接點選下方字型跳轉:
  • 你想要的,應有盡有!50本python學習書籍獲取地址/安裝材料/python高質量基礎進階教程