is
được sử dụng để kiểm tra danh tính, để kiểm tra xem cả hai biến trỏ đến cùng một đối tượng, trong khi ==
được sử dụng để kiểm tra giá trị.
Từ docs:
Các nhà khai thác is
và is not
thử nghiệm cho nhận dạng đối tượng: x is y
là true
khi và chỉ khi x và y là cùng một đối tượng. x is not y
mang lại giá trị chân lý nghịch đảo .
>>> id(1000-1) == id(999)
False
""" What is id?
id(object) -> integer
Return the identity of an object. This is guaranteed to be unique among
simultaneously existing objects. (Hint: it's the object's memory address.)
"""
>>> 1000-1 is 999
False
>>> 1000-1 == 999
True
>>> x = [1]
>>> y = x #now y and x both point to the same object
>>> y is x
True
>>> id(y) == id(x)
True
>>> x = [1]
>>> y = [1]
>>> x == y
True
>>> x is y
False
>>> id(x),id(y) #different IDs
(161420364, 161420012)
Nhưng một số nguyên nhỏ (-5 đến 256) và dây nhỏ được lưu trữ bởi Python: Why (0-6) is -6 = False?
#small strings
>>> x = "foo"
>>> y = "foo"
>>> x is y
True
>>> x == y
True
#huge string
>>> x = "foo"*1000
>>> y = "foo"*1000
>>> x is y
False
>>> x==y
True
Nguồn
2013-05-17 18:47:53
'>>> 2-1 là 1' trả về' True' lol – TehTris
@carlosdc không chính xác là trùng lặp. Vì nó hoạt động cho các số khác. Đó là lý do tại sao tôi hỏi. – Rahul
@Rahul Làm rõ điều đó trong câu hỏi của bạn. – askewchan