Python - 身份運算子



Python 身份運算子

身份運算子比較物件以確定它們是否共享相同的記憶體並引用相同的物件型別(資料型別)。

Python 提供了兩個身份運算子;我們已將它們列出如下:

  • 'is' 運算子
  • 'is not' 運算子

Python 'is' 運算子

如果兩個運算元物件共享相同的記憶體位置,則 'is' 運算子計算結果為 True。可以使用 "id()" 函式獲取物件的記憶體位置。如果兩個變數的 "id()" 相同,則 "is" 運算子返回 True。.

Python 身份 'is' 運算子示例

a = [1, 2, 3, 4, 5]
b = [1, 2, 3, 4, 5]
c = a

# Comparing and printing return values
print(a is c)
print(a is b)

# Printing IDs of a, b, and c
print("id(a) : ", id(a))
print("id(b) : ", id(b))
print("id(c) : ", id(c))

它將產生以下輸出

True
False
id(a) :  140114091859456
id(b) :  140114091906944
id(c) :  140114091859456

Python 'is not' 運算子

如果兩個運算元物件不共享相同的記憶體位置或兩個運算元不是相同的物件,則 'is not' 運算子計算結果為 True。

Python 身份 'is not' 運算子示例

a = [1, 2, 3, 4, 5]
b = [1, 2, 3, 4, 5]
c = a

# Comparing and printing return values
print(a is not c)
print(a is not b)

# Printing IDs of a, b, and c
print("id(a) : ", id(a))
print("id(b) : ", id(b))
print("id(c) : ", id(c))

它將產生以下輸出

False
True
id(a) :  140559927442176
id(b) :  140559925598080
id(c) :  140559927442176

Python 身份運算子示例及說明

示例 1

a="TutorialsPoint"
b=a
print ("id(a), id(b):", id(a), id(b))
print ("a is b:", a is b)
print ("b is not a:", b is not a)

它將產生以下輸出

id(a), id(b): 2739311598832 2739311598832
a is b: True
b is not a: False

列表元組 物件的行為不同,這在第一次看到時可能會顯得奇怪。在下面的示例中,兩個列表 "a" 和 "b" 包含相同的專案。但是它們的 id() 不同。

示例 2

a=[1,2,3]
b=[1,2,3]
print ("id(a), id(b):", id(a), id(b))
print ("a is b:", a is b)
print ("b is not a:", b is not a)

它將產生以下輸出

id(a), id(b): 1552612704640 1552567805568
a is b: False
b is not a: True

列表或元組僅包含各個專案的記憶體位置,而不是專案本身。"a" 包含 10、20 和 30 整型物件的地址在某個位置,這可能與 "b" 的位置不同。

示例 3

print (id(a[0]), id(a[1]), id(a[2]))
print (id(b[0]), id(b[1]), id(b[2]))

它將產生以下輸出

140734682034984 140734682035016 140734682035048
140734682034984 140734682035016 140734682035048

由於 "a" 和 "b" 的位置不同,即使兩個列表包含相同的數字,"is" 運算子也返回 False。

廣告