Các ==
giá trị tương đương kiểm tra toán tử. Các is
nhận dạng đối tượng kiểm tra khai thác, Python kiểm tra xem hai định nghĩa là cùng một đối tượng (ví dụ, sống tại cùng một địa chỉ trong bộ nhớ).
>>> a = 'banana'
>>> b = 'banana'
>>> a is b
True
Trong ví dụ này, Python chỉ tạo một đối tượng chuỗi và cả hai a
và b
tham chiếu đến nó. Lý do là Python lưu trữ nội bộ và sử dụng lại một số chuỗi như một tối ưu hóa, thực sự chỉ có một chuỗi 'chuối' trong bộ nhớ, được chia sẻ bởi a và b; Để kích hoạt hành vi bình thường, bạn cần sử dụng chuỗi dài hơn:
>>> a = 'a longer banana'
>>> b = 'a longer banana'
>>> a == b, a is b
(True, False)
Khi bạn tạo hai danh sách, bạn nhận được hai đối tượng:
>>> a = [1, 2, 3]
>>> b = [1, 2, 3]
>>> a is b
False
Trong trường hợp này, chúng tôi sẽ nói rằng hai danh sách là tương đương, bởi vì chúng có cùng các yếu tố, nhưng không giống nhau, vì chúng không phải là cùng một đối tượng. Nếu hai đối tượng giống hệt nhau, chúng cũng tương đương, nhưng nếu chúng tương đương nhau, chúng không nhất thiết phải giống hệt nhau.
Nếu a
tham chiếu đến một đối tượng và bạn gán b = a
, thì cả hai biến đều tham chiếu đến cùng một đối tượng:
>>> a = [1, 2, 3]
>>> b = a
>>> b is a
True