Chào mừng
Trong bài viết này, bạn sẽ học:
- Giá trị thật và giả là gì.
- Điều gì tạo nên một giá trị trung thực hoặc sai lệch.
- Làm thế nào để sử dụng
bool()
để xác định xem một giá trị là trung thực hay sai. - Cách tạo các đối tượng từ các lớp do người dùng định nghĩa thành thật hoặc giả bằng phương thức đặc biệt
__bool __
.
Hãy bắt đầu nào! ✨
🔹 Giá trị thật so với Giá trị trung thực và sai lầm
Hãy để tôi giới thiệu cho bạn những khái niệm này bằng cách so sánh chúng với các giá trị True
và False
mà chúng tôi thường làm việc cùng.
Các biểu thức có toán hạng và toán tử đánh giá thành một trong hai True
hoặc False
và chúng có thể được sử dụng trong một if
hoặc while
điều kiện để xác định xem một khối mã có nên chạy hay không.
Ở đây chúng tôi có một ví dụ:
# Expression 5 < 3
>>> if 5 < 3:
print("True")
else:
print("False")
# Output
False
Trong ví dụ này, mọi thứ đang hoạt động như chúng tôi mong đợi vì chúng tôi đã sử dụng một biểu thức có hai toán hạng và một toán tử 5 < 3
.
Nhưng bạn nghĩ điều gì sẽ xảy ra nếu chúng ta thử chạy đoạn mã này?
>>> a = 5
>>> if a:
print(a)
Lưu ý rằng bây giờ chúng ta không có biểu thức điển hình bên cạnh if
từ khóa, chỉ một biến:

Đáng ngạc nhiên, đầu ra là:
5
Nếu chúng ta thay đổi giá trị của a
về không, như thế này:
>>> a = 0
>>> if a:
print(a)
Không có đầu ra.
Tôi chắc chắn rằng bạn phải hỏi điều này ngay bây giờ: điều gì đã làm cho mã chạy thành công?
biến a
không phải là một biểu thức điển hình. Nó không có toán tử và toán hạng, vậy tại sao nó lại đánh giá là True
hoặc False
phụ thuộc vào giá trị của nó?
Câu trả lời nằm ở khái niệm về các giá trị Chân lý và Sai lầm, bản thân chúng không phải là các giá trị chân lý, nhưng chúng đánh giá một trong hai True
hoặc False
.
🔸Giá trị thật và giả
Trong Python, cá nhân giá trị có thể đánh giá một trong hai True
hoặc False
. Chúng không nhất thiết phải là một phần của biểu thức lớn hơn để đánh giá giá trị thực vì chúng đã có một giá trị được xác định bởi các quy tắc của ngôn ngữ Python.
Các quy tắc cơ bản là:
- Các giá trị đánh giá
False
Được cân nhắcFalsy
. - Các giá trị đánh giá
True
Được cân nhắcTruthy
.
Theo Tài liệu Python:
Bất kỳ đối tượng nào cũng có thể được kiểm tra giá trị thực, để sử dụng trong một
if
hoặcwhile
điều kiện hoặc dưới dạng toán hạng của các phép toán Boolean bên dưới (và, hoặc, không).
🔹 Bối cảnh Boolean
Khi chúng ta sử dụng một giá trị như một phần của biểu thức lớn hơn, hoặc như một if
hoặc while
điều kiện, chúng tôi đang sử dụng nó trong một bối cảnh boolean.
Bạn có thể coi bối cảnh boolean là một “phần” cụ thể của mã yêu cầu giá trị phải là True
hoặc False
để có ý nghĩa.
Ví dụ: (xem bên dưới) điều kiện sau if
từ khóa hoặc sau while
từ khóa phải đánh giá một trong hai True
hoặc False
:

💡 Mẹo: Giá trị có thể được lưu trữ trong một biến. Chúng ta có thể viết tên của biến sau if
hoặc while
từ khóa thay vì giá trị của chính nó. Điều này sẽ cung cấp chức năng tương tự.
Bây giờ bạn đã biết giá trị trung thực và giả là gì và cách chúng hoạt động trong ngữ cảnh boolean, hãy xem một số ví dụ thực tế về giá trị trung thực và giả.
🔸 Giá trị giả
Trình tự và Bộ sưu tập:
- danh sách trống
[]
- bộ trống
()
- Từ điển trống
{}
- bộ trống
set()
- Chuỗi rỗng
""
- dãy trống
range(0)
Số
- Số không của bất kỳ loại số nào.
- số nguyên:
- Trôi nổi:
0.0
- Phức tạp:
0j
hằng số
Giá trị giả là lý do tại sao không có đầu ra trong ví dụ ban đầu của chúng tôi khi giá trị của a
bằng không.
Giá trị là giả, vì vậy
if
điều kiện sẽ là False
và điều kiện sẽ không chạy trong ví dụ này:
>>> a = 0
>>> if a:
print(a)
# No Output
🔹 Giá trị trung thực
Theo Tài liệu Python:
Theo mặc định, một đối tượng được coi là thật.
Giá trị trung thực bao gồm:
- Các chuỗi hoặc bộ sưu tập không trống (danh sách, bộ dữ liệu, chuỗi, từ điển, bộ).
- Các giá trị số khác không.
True
Chính vì vậy giá trị của a
đã được in trong ví dụ ban đầu của chúng tôi vì giá trị của nó là 5 (giá trị trung thực):
>>> a = 5
>>> if a:
print(a)
# Output
5
🔸 Hàm bool() tích hợp
Bạn có thể kiểm tra xem một giá trị là trung thực hay sai bằng công cụ tích hợp bool()
chức năng.
Theo Tài liệu Python, chức năng này:
Trả về một giá trị Boolean, tức là một trong
True
hoặcFalse
. x (đối số) được chuyển đổi bằng cách sử dụng thủ tục kiểm tra sự thật tiêu chuẩn.

Bạn chỉ cần chuyển giá trị làm đối số, như sau:
>>> bool(5)
True
>>> bool(0)
False
>>> bool([])
False
>>> bool({5, 5})
True
>>> bool(-5)
True
>>> bool(0.0)
False
>>> bool(None)
False
>>> bool(1)
True
>>> bool(range(0))
False
>>> bool(set())
False
>>> bool({5, 6, 2, 5})
True
💡 Mẹo: Bạn cũng có thể chuyển một biến làm đối số để kiểm tra xem giá trị của nó là đúng hay sai.
🔹 Ví dụ thực tế
Một trong những lợi thế của việc sử dụng các giá trị trung thực và sai lệch là chúng có thể giúp bạn làm cho mã của mình ngắn gọn và dễ đọc hơn. Ở đây chúng ta có hai ví dụ thực tế.
Ví dụ:
Chúng tôi có chức năng này print_even()
lấy làm đối số là một danh sách hoặc bộ chứa các số và chỉ in ra các giá trị chẵn. Nếu đối số trống, nó sẽ in một thông báo mô tả:
def print_even(data):
if len(data) > 0:
for value in data:
if value % 2 == 0:
print(value)
else:
print("The argument cannot be empty")
Chú ý dòng này:
if len(data) > 0:
Chúng ta có thể làm cho điều kiện ngắn gọn hơn nhiều với các giá trị true và false:
if data:
Nếu danh sách trống, data
sẽ đánh giá để False
. Nếu nó không trống, nó sẽ đánh giá thành True
. Chúng tôi nhận được chức năng tương tự với mã ngắn gọn hơn.
Đây sẽ là chức năng cuối cùng của chúng tôi:
def print_even(data):
if data:
for value in data:
if value % 2 == 0:
print(value)
else:
print("The argument cannot be empty")
Ví dụ:
Chúng ta cũng có thể sử dụng các giá trị trung thực và sai lệch để đưa ra một ngoại lệ (lỗi) khi đối số được truyền cho một hàm không hợp lệ.
>>> def print_even(data):
if not data:
raise ValueError("The argument data cannot be empty")
for value in data:
if value % 2 == 0:
print(value)
Trong trường hợp này, bằng cách sử dụng not data
như điều kiện của if
tuyên bố, chúng tôi đang nhận được giá trị sự thật ngược lại của data
cho if
điều kiện, tình trạng, trạng thái.
Hãy phân tích not data
chi tiết hơn:
Nếu data
trống:
- Nó sẽ là một giá trị sai, vì vậy
data
sẽ đánh giá đểFalse
. not data
sẽ tương đương vớinot False
đó làTrue
.- điều kiện sẽ là
True
. - Ngoại lệ sẽ được nâng lên.
Nếu data
không có sản phẩm nào:
- Nó sẽ là một giá trị trung thực, vì vậy nó sẽ đánh giá
True
. not data
sẽ tương đương vớinot True
đó làFalse
.- điều kiện sẽ là
False
. - Ngoại lệ sẽ không được nâng lên.
🔸 Tạo các giá trị trung thực và sai lệch cho các đối tượng tùy chỉnh
Nếu bạn đã quen thuộc với các lớp và Lập trình hướng đối tượng, bạn có thể thêm một phương thức đặc biệt vào các lớp của mình để làm cho các đối tượng của bạn hoạt động như các giá trị trung thực và giả.
__bool __()
Với phương pháp đặc biệt __bool__()
bạn có thể đặt một điều kiện “được tùy chỉnh” sẽ xác định khi nào một đối tượng trong lớp của bạn sẽ đánh giá thành True
hoặc False
.
Theo Tài liệu Python:
Theo mặc định, một đối tượng được coi là đúng trừ khi lớp của nó định nghĩa một
__bool__()
phương thức trả vềFalse
hoặc một__len__()
phương thức trả về 0 khi được gọi với đối tượng.
Ví dụ: nếu chúng ta có lớp rất đơn giản này:
>>> class Account:
def __init__(self, balance):
self.balance = balance
Bạn có thể thấy rằng không có phương thức đặc biệt nào được định nghĩa, vì vậy tất cả các đối tượng mà bạn tạo từ lớp này sẽ luôn đánh giá theo True
:
>>> account1 = Account(500)
>>> bool(account1)
True
>>> account2 = Account(0)
>>> bool(account2)
True
Chúng ta có thể tùy chỉnh hành vi này bằng cách thêm phương thức đặc biệt __bool__()
:
>>> class Account:
def __init__(self, balance):
self.balance = balance
def __bool__(self):
return self.balance > 0
Bây giờ, nếu số dư tài khoản lớn hơn 0, đối tượng sẽ đánh giá là True
. Mặt khác, nếu số dư tài khoản bằng 0, đối tượng sẽ ước tính thành False
.
>>> account1 = Account(500)
>>> bool(account1)
True
>>> account2 = Account(0)
>>> bool(account2)
False
💡 Mẹo: Nếu __bool__()
không được định nghĩa trong lớp nhưng __len__()
phương thức là, giá trị được phương thức này trả về sẽ xác định xem đối tượng là trung thực hay sai.
🔹 Tóm lại
- Giá trị trung thực là các giá trị đánh giá
True
trong một ngữ cảnh boolean. - Giá trị sai là các giá trị đánh giá
False
trong một ngữ cảnh boolean. - Các giá trị sai bao gồm các chuỗi trống (danh sách, bộ dữ liệu, chuỗi, từ điển, bộ), số 0 trong mọi loại số,
None
vàFalse
. - Giá trị trung thực bao gồm các chuỗi, số không trống (ngoại trừ
trong mọi loại số) và về cơ bản mọi giá trị không sai.
- Chúng có thể được sử dụng để làm cho mã của bạn ngắn gọn hơn.
Tôi thực sự hy vọng bạn thích bài viết của tôi và thấy nó hữu ích. Giờ đây, bạn có thể làm việc với các giá trị trung thực và sai lệch trong các dự án Python của mình. Kiểm tra các khóa học trực tuyến của tôi. theo tôi trên Twitter. ⭐️