HomeLập trìnhPythonGiá trị thật...

Giá trị thật và giả trong Python: Giới thiệu chi tiết


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ị TrueFalse 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:

hình ảnh-3

Đá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 thêm  Sắp xếp danh sách Python – Cách sắp xếp danh sách trong Python

Các quy tắc cơ bản là:

  • Các giá trị đánh giá False Được cân nhắc Falsy.
  • Các giá trị đánh giá True Được cân nhắc Truthy.

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ặc while đ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:

hình ảnh-1

💡 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.

Đọc thêm  Giá trị tuyệt đối của Python – Hướng dẫn Python abs

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ặc False. 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.

hình ảnh-2

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ới not 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ới not Trueđó là False .
  • điều kiện sẽ là False.
  • Ngoại lệ sẽ không được nâng lên.
Đọc thêm  Danh sách duy nhất của Python – Cách lấy tất cả các giá trị duy nhất trong danh sách hoặc mảng

🔸 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ố, NoneFalse.
  • 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. ⭐️





Zik.vn – Biên dịch & Biên soạn Lại

spot_img

Create a website from scratch

Just drag and drop elements in a page to get started with Newspaper Theme.

Buy Now ⟶

Bài viết liên quang

DMCA.com Protection Status