Tóm lược:
Sử dụng is
khi 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 var
là 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 == None
sẽ 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
is
kiể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 is
kiể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