Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.
Toán tử is trong Python
Trong bài viết này, bạn sẽ tìm hiểu về toán tử is trong Python, cách nó hoạt động và sự khác biệt giữa toán tử is và toán tử so sánh bằng (==). Thông qua việc phân tích các ví dụ cụ thể, bạn sẽ nắm rõ hơn về cách sử dụng toán tử is để so sánh danh tính của các đối tượng trong Python, cũng như khi nào nên sử dụng nó thay vì toán tử ==.

Giới thiệu về toán tử is trong Python
Toán tử is trong Python so sánh hai biến và trả về True nếu chúng tham chiếu đến cùng một đối tượng. Nếu hai biến tham chiếu đến các đối tượng khác nhau, toán tử is trả về False.
Nói cách khác, toán tử is so sánh danh tính của hai biến và trả về True nếu chúng tham chiếu đến cùng một đối tượng.
Hãy xem ví dụ sau:
Bài viết này được đăng tại [free tuts .net]
a = 100 b = a result = a is b print(result)
Kết quả:
True
Cách hoạt động:
- Đầu tiên, khai báo biến
atham chiếu đến một đối tượng kiểuintvới giá trị là 100. - Sau đó, khai báo biến
btham chiếu đến cùng một đối tượng mà biếnađang tham chiếu. - Sử dụng toán tử
isđể kiểm tra xemavàbcó tham chiếu đến cùng một đối tượng hay không và hiển thị kết quả.
Vì cả a và b đều tham chiếu đến cùng một đối tượng, kết quả là True.
.png)
Ví dụ sau định nghĩa hai biến a và b và khởi tạo chúng với giá trị 100:
a = 100 b = 100 result = a is b print(result)
Kết quả:
True
Trong ví dụ này, không có liên kết trực tiếp giữa a và b. Tuy nhiên, khi bạn gán giá trị 100 cho b, Python Memory Manager tái sử dụng đối tượng hiện có. Do đó, cả a và b đều tham chiếu đến cùng một đối tượng.
.png)
Lưu ý: Kết quả của ví dụ này có thể khác nhau, tùy thuộc vào cách Python Memory Manager được triển khai. Bạn không nên dựa vào điều này.
Ví dụ sau định nghĩa hai danh sách có cùng các phần tử và sử dụng toán tử is để kiểm tra xem chúng có tham chiếu đến cùng một đối tượng danh sách hay không:
ranks = [1, 2, 3] rates = [1, 2, 3] result = ranks is rates print(result)
Kết quả:
False
Trong ví dụ này, các danh sách là các đối tượng có thể thay đổi (mutable). Python Memory Manager không tái sử dụng danh sách hiện có mà tạo ra một danh sách mới trong bộ nhớ. Do đó, các biến ranks và rates tham chiếu đến các danh sách khác nhau.

So sánh toán tử is và toán tử == trong Python
Toán tử bằng (==) so sánh hai biến về mặt giá trị và trả về True nếu chúng bằng nhau. Ngược lại, nó trả về False.
Ví dụ sau sử dụng cả toán tử is và toán tử ==:
a = 100 b = a is_identical = a is b is_equal = a == b print(is_identical) print(is_equal)
Kết quả:
True True
Vì a và b tham chiếu đến cùng một đối tượng, chúng vừa đồng nhất (identical) vừa bằng nhau (equal).
Trong ví dụ sau, cả hai danh sách đều có cùng các phần tử, nên chúng bằng nhau.
Tuy nhiên, vì chúng tham chiếu đến các đối tượng danh sách khác nhau trong bộ nhớ, chúng không đồng nhất:
ranks = [1, 2, 3] rates = [1, 2, 3] is_identical = ranks is rates is_equal = ranks == rates print(is_identical) print(is_equal)
Kết quả:
False True
Toán tử is not trong Python
Để phủ định toán tử is, bạn sử dụng toán tử not. Toán tử is not trả về False nếu hai biến tham chiếu đến cùng một đối tượng. Ngược lại, nó trả về True.
Ví dụ sau sử dụng toán tử is not để kiểm tra xem hai biến có không tham chiếu đến cùng một đối tượng danh sách hay không:
ranks = [1, 2, 3] rates = [1, 2, 3] result = ranks is not rates print(result) # True
Kết quả:
True
Kết bài
Hiểu rõ cách sử dụng toán tử is và sự khác biệt của nó so với toán tử == là một phần quan trọng trong việc làm chủ Python. Toán tử is giúp kiểm tra xem hai biến có tham chiếu đến cùng một đối tượng hay không, trong khi toán tử == được sử dụng để so sánh giá trị của hai biến. Bên cạnh đó, toán tử not có thể được dùng để phủ định kết quả của toán tử is, giúp chúng ta dễ dàng kiểm tra các điều kiện ngược lại. Bằng cách nắm vững những khái niệm này, bạn sẽ có thể viết mã Python chính xác và hiệu quả hơn, đồng thời tránh được những lỗi không mong muốn trong quá trình lập trình.

Các kiểu dữ liệu trong C ( int - float - double - char ...)
Thuật toán tìm ước chung lớn nhất trong C/C++
Cấu trúc lệnh switch case trong C++ (có bài tập thực hành)
ComboBox - ListBox trong lập trình C# winforms
Random trong Python: Tạo số random ngẫu nhiên
Lệnh cin và cout trong C++
Cách khai báo biến trong PHP, các loại biến thường gặp
Download và cài đặt Vertrigo Server
Thẻ li trong HTML
Thẻ article trong HTML5
Cấu trúc HTML5: Cách tạo template HTML5 đầu tiên
Cách dùng thẻ img trong HTML và các thuộc tính của img
Thẻ a trong HTML và các thuộc tính của thẻ a thường dùng