is vs == - Khi nào dùng cái nào?
Sự khác biệt
== - Equality (giá trị bằng nhau)
a = [1, 2, 3]
b = [1, 2, 3]
print(a == b) # True - Cùng giá trịis - Identity (cùng object)
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 objectKhi nào dùng is
✅ So sánh với None
# ✅ ĐÚNG
if value is None:
pass
# ❌ SAI
if value == None:
pass✅ So sánh với True/False
# ✅ OK
if flag is True:
pass
# ✅ Nhưng tốt hơn
if flag:
pass✅ Kiểm tra cùng object
if a is b:
print("Cùng object")Khi nào dùng ==
✅ So sánh giá trị
# ✅ Strings
if name == "Alice":
pass
# ✅ Numbers
if count == 10:
pass
# ✅ Lists/dicts
if data == expected:
passCạm bẫy
String/int caching
# 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)Tóm tắt
isvs==:
is→ Identity (cùng object?)==→ Equality (cùng giá trị?)- ✅
ischo: None, True, False- ✅
==cho: strings, numbers, data structures
Pattern:
if value is None: # Identity
if value == expected: # EqualityLast updated on
Python