Bỏ qua để đến nội dung

is vs == - Khi nào dùng cái nào?

a = [1, 2, 3]
b = [1, 2, 3]
print(a == b) # True - Cùng giá trị
a = [1, 2, 3]
b = [1, 2, 3]
print(a is b) # False - Khác object
c = a
print(a is c) # True - Cùng object
# ✅ ĐÚNG
if value is None:
pass
# ❌ SAI
if value == None:
pass
# ✅ OK
if flag is True:
pass
# ✅ Nhưng tốt hơn
if flag:
pass
if a is b:
print("Cùng object")
# ✅ Strings
if name == "Alice":
pass
# ✅ Numbers
if count == 10:
pass
# ✅ Lists/dicts
if data == expected:
pass
# Strings
a = "hello"
b = "hello"
print(a is b) # True (interned)
# Integers
x = 256
y = 256
print(x is y) # True (cached)
x = 257
y = 257
print(x is y) # False (not cached)

is vs ==:

  • is → Identity (cùng object?)
  • == → Equality (cùng giá trị?)
  • is cho: None, True, False
  • == cho: strings, numbers, data structures

Pattern:

if value is None: # Identity
if value == expected: # Equality