Tóm lược:
Sử dụng iskhi bạn muốn kiểm tra chống lại một đối tượng sắc (ví dụ như kiểm tra để xem nếu varlà None). Sử dụng ==khi bạn muốn kiểm tra sựvar bằng nhau (ví dụ: Có bằng 3?).
Giải trình:
Bạn có thể có các lớp tùy chỉnh nơi my_var == Nonesẽ trở lạiTrue
ví dụ:
class Negator(object):
def __eq__(self,other):
return not other
thing = Negator()
print thing == None #True
print thing is None #False
iskiểm tra danh tính đối tượng . Chỉ có 1 đối tượng None, vì vậy khi bạn thực hiện my_var is None, bạn đang kiểm tra xem chúng có thực sự là cùng một đối tượng không (không chỉ các đối tượng tương đương )
Nói cách khác, ==là kiểm tra tính tương đương (được xác định từ đối tượng này sang đối tượng khác) trong khi iskiểm tra nhận dạng đối tượng:
lst = [1,2,3]
lst == lst[:] # This is True since the lists are "equivalent"
lst is lst[:] # This is False since they're actually different objects
is- python.org/dev/peps/pep-0008/#programming-recommendations