Kiểm tra chuỗi rỗng trong Python

Trong bài này chúng ta sẽ tìm hiểu cách sử dụng hàm all[] trong Python, đây là hàm dùng để kiểm tra dữ liệu của một danh sách như List, Tuple, Dictionary.

Giả sử bạn cần kiểm tra tất cả các phần tử của một danh sách đều có giá trị True hay không thì hãy sử dụng hàm all[] nhé. Nhưng vấn đề là làm sao biết dữ liệu nào được quy về True và dữ liệu nào được quy về False?

Các dữ liệu True và False

Dữ liệu quy về False gồm:

  • Là số 0
  • Là rỗng ""
  • Là Null
  • Là False

Dữ liệu quy về true gồm:

  • Tất cả dữ liệu khác với nhóm trên.

Cú pháp hàm all[] trong Python

Trước tiên hãy tham khảo cú pháp của hàm này đã nhé.

Trong đó iterable là một biến kiểu dữ liệu danh sách như Tuple, List, Dictionary. Tức là kiểu dữ liệu chứa nhiều phần tử.

Giá trị trả về hàm all[] trong Python

Hàm này trả về True hoặc False, phụ thuộc vào dữ liệu danh sách mà bạn truyền vào:

  • Return True nếu toàn bộ danh sách là True
  • Return False nếu xuất hiện một phần tử là False

Bảng dưới đây mô phỏng các trường hợp xảy ra:

Giá trị trả về của hàm All PythonKhiReturn ValueTất cả phần tử đều TrueTrueTất cả phần tử đều FalseFalseMột phần tử True, còn lại FalseFalseMột phần tử False, còn lại TrueFalseRỗngTrue

Cách dùng hàm all[] trong Python

Sau đây chúng ta sẽ làm một vài ví dụ về cách dùng hàm này nhé.

Dùng hàm all với List

# Tất cả giá trị đều True
my_list = [1, 3, 4, 5]
print[all[my_list]] # Return True

# Tất cả giá trị đều False
my_list = [0, False]
print[all[my_list]] # Return false

# Xuất hiện giá trị false
my_list = [1, 3, 4, 0]
print[all[my_list]] # Return false

# Danh sách rỗng
my_list = []
print[all[my_list]] # Return false

Kết quả:

Như bạn thấy, chỉ cần có một phần tử chứa giá trị False là hàm sẽ return False.

Dùng hàm all với String:

Khi tham số truyền vào là một chuỗi chứ không phải là một danh sách thì nó return True, cho dù đó là một chuỗi rỗng.

Làm điều này: foo == ""là thực hành rất xấu. ""là một giá trị kỳ diệu. Bạn không bao giờ nên kiểm tra các giá trị ma thuật [thường được gọi là số ma thuật ]

Những gì bạn nên làm là so sánh với một tên biến mô tả.

Tên biến mô tả

Người ta có thể nghĩ rằng "blank_ chuỗi" là một tên biến mô tả. Không phải vậy .

Trước khi bạn đi và làm empty_string = ""và nghĩ rằng bạn có một tên biến tuyệt vời để so sánh với. Đây không phải là "tên biến mô tả" nghĩa là gì.

Một tên biến mô tả tốt được dựa trên bối cảnh của nó. Bạn phải suy nghĩ về chuỗi rỗng là gì .

  • Nó đến từ đâu.
  • Tại sao nó ở đó.
  • Tại sao bạn cần kiểm tra nó.

Ví dụ trường mẫu đơn giản

Bạn đang xây dựng một biểu mẫu nơi người dùng có thể nhập các giá trị. Bạn muốn kiểm tra xem người dùng có viết gì hay không.

Một tên biến tốt có thể là not_filled_in

Điều này làm cho mã rất dễ đọc

if formfields.name == not_filled_in:
    raise ValueError["We need your name"]

Ví dụ phân tích cú pháp CSV kỹ lưỡng

Bạn đang phân tích tệp CSV và muốn chuỗi trống được phân tích cú pháp như None

[Vì CSV hoàn toàn dựa trên văn bản, nó không thể biểu thị Nonemà không sử dụng các từ khóa được xác định trước]

Một tên biến tốt có thể là CSV_NONE

Điều này giúp mã dễ dàng thay đổi và thích ứng nếu bạn có tệp CSV mới đại diện cho Nonemột chuỗi khác""

if csvfield == CSV_NONE:
    csvfield = None

Không có câu hỏi về việc nếu đoạn mã này là chính xác. Nó khá rõ ràng rằng nó làm những gì nó nên làm.

So sánh điều này với

if csvfield == EMPTY_STRING:
    csvfield = None

Câu hỏi đầu tiên ở đây là, tại sao chuỗi trống xứng đáng được đối xử đặc biệt?

Điều này sẽ nói với các lập trình viên tương lai rằng một chuỗi rỗng phải luôn luôn được coi là None.

Điều này là do nó trộn logic kinh doanh [Giá trị CSV phải là gì None] với việc triển khai mã [Chúng ta thực sự so sánh với cái gì]

Chủ Đề