Toán tử == sẽ so sánh giá trị của hai toán hạng xem chúng có bằng nhau hay không. Trong khi đó toán tử is sẽ kiểm tra liệu rằng cả hai toán hạng có đang tham chiếu tới cùng một đối tượng hay không.
# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: https://www.facebook.com/cafedevn
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
# -----------------------------------------------------------
# python3 code to
# illustrate the
# difference between
# == and is operator
# [] is an empty list
list1 = []
list2 = []
list3=list1
if (list1 == list2):
print("True")
else:
print("False")
if (list1 is list2):
print("True")
else:
print("False")
if (list1 is list3):
print("True")
else:
print("False")
list3 = list3 + list2
if (list1 is list3):
print("True")
else:
print("False")
Kết quả in ra là:
True
False
True
False
– Đầu ra của câu lệnh if đầu tiên là “True” bởi vì cả list1 và list2 đều là danh sách trống.
– Câu lệnh if thứ hai sẽ in ra “False” bởi vì lúc này hai danh sách trống đang nằm trên các vùng bộ nhớ khác nhau. Do đó list1 và list2 bây giờ đang tham chiếu đến các đối tượng khác nhau. Chúng ta có thể kiểm tra điều này bằng cách sử dụng hàm id() trong Python, hàm này sẽ trả về “định danh – identity” của một đối tượng.
– Kết quả đầu ra của câu lệnh if thứ ba là “True” bởi vì lúc này cả list1 và list3 đang trỏ đến cùng một đối tượng.
– Kết quả đầu ra của câu lệnh if thứ tư là “False” bởi vì thao tác nối hai danh sách sẽ luôn luôn sinh ra một danh sách mới.
Ví dụ sử dụng hàm id() trong Python:
list1 = []
list2 = []
print(id(list1))
print(id(list2))
Kết quả in ra là:
139877155242696
139877155253640
Từ kết quả này, ta có thể thấy rằng list1 và list2 đang trỏ đến hai đối tượng khác nhau.
Nguồn và Tài liệu tiếng anh tham khảo:
Tài liệu từ cafedev:
- Full series tự học Python từ cơ bản tới nâng cao tại đây nha.
- Ebook về python tại đây.
- Các series tự học lập trình khác
Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:
Chào thân ái và quyết thắng!