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
a
tham chiếu đến một đối tượng kiểuint
với giá trị là 100. - Sau đó, khai báo biến
b
tham 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 xema
vàb
có 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
.
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.
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.