Logic của trăn là gì?

Có ba toán tử Boolean trong Python.

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
1,
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 và
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
3. Với chúng, bạn có thể kiểm tra các điều kiện và quyết định đường dẫn thực thi mà chương trình của bạn sẽ thực hiện. Trong hướng dẫn này, bạn sẽ tìm hiểu về toán tử
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 trong Python và cách sử dụng nó

Đến cuối hướng dẫn này, bạn sẽ học được

  • Cách hoạt động của toán tử Python

    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    2

  • Cách sử dụng toán tử Python

    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    2 trong ngữ cảnh Boolean và không phải Boolean

  • Bạn có thể giải quyết loại vấn đề lập trình nào bằng cách sử dụng

    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    2 trong Python

  • Cách đọc và hiểu rõ hơn mã của người khác khi họ sử dụng một số tính năng đặc biệt của toán tử Python

    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    2

Bạn sẽ học cách sử dụng toán tử

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 của Python bằng cách xây dựng một số ví dụ thực tế. Ngay cả khi bạn không thực sự sử dụng tất cả các khả năng mà toán tử Python
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 cung cấp, thì việc thành thạo nó sẽ cho phép bạn viết mã tốt hơn

Tải xuống miễn phí. Nhận một chương mẫu từ Thủ thuật Python. Cuốn sách chỉ cho bạn các phương pháp hay nhất về Python với các ví dụ đơn giản mà bạn có thể áp dụng ngay lập tức để viết mã Pythonic + đẹp hơn

logic Boolean

George Boole [1815–1864] đã phát triển cái mà ngày nay được gọi là đại số Boolean, là nền tảng của logic kỹ thuật số đằng sau phần cứng máy tính và ngôn ngữ lập trình

Đại số Boolean được xây dựng xung quanh giá trị thực của các biểu thức và đối tượng [bất kể chúng đúng hay sai] và dựa trên các phép toán Boolean

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
01,
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
02 và
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
03. Các hoạt động này được thực hiện thông qua các toán tử logic hoặc Boolean cho phép bạn tạo các biểu thức Boolean, là các biểu thức đánh giá đúng hoặc sai

Với sự trợ giúp của logic Boolean, bạn có thể đánh giá các điều kiện và quyết định các hoạt động mà chương trình của bạn sẽ thực hiện, tùy thuộc vào giá trị thực của các điều kiện đó. Đây là nền tảng quan trọng trong lập trình và cung cấp cho bạn các công cụ để quyết định luồng thực thi chương trình của bạn

Hãy cùng điểm qua một số khái niệm cơ bản liên quan đến logic Boolean trong Python

  • Boolean là loại giá trị có thể là

    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    04 hoặc
    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    05. Trong Python, kiểu Boolean là
    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    06, là kiểu con của
    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    07

  • Giá trị Boolean là các giá trị

    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    04 hoặc
    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    05 [với chữ T và F viết hoa] trong Python

  • Biến Boolean là biến có thể là

    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    04 hoặc
    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    05. Các biến Boolean thường được sử dụng như
    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    12 để cho biết liệu các điều kiện cụ thể có tồn tại hay không

  • Một biểu thức Boolean là một biểu thức trả về

    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    04 hoặc
    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    05

  • Bối cảnh Boolean có thể là ____215 điều kiện và ____216 vòng lặp, trong đó Python mong đợi một biểu thức ước tính thành giá trị Boolean. Bạn có thể sử dụng hầu như bất kỳ biểu thức hoặc đối tượng nào trong ngữ cảnh Boolean và Python sẽ cố gắng xác định giá trị thực của nó

  • Toán hạng là các biểu thức con hoặc đối tượng liên quan đến một biểu thức [Boolean hoặc không] và được kết nối bởi một toán tử

  • Boolean hoặc các toán tử logic là

    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    01 [logic
    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    01 hoặc kết hợp],
    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    02 [logic
    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    02 hoặc phép tách], và
    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    03 [logic
    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    03 hoặc phủ định]. Các từ khóa
    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    1,
    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    2 và
    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    3 là toán tử Python cho các hoạt động này

Bây giờ bạn đã có ngữ cảnh tốt hơn về logic Boolean, hãy tiếp tục với một số chủ đề cụ thể hơn về Python

Loại bỏ các quảng cáo

Toán tử Boolean trong Python

Python có ba toán tử Boolean được gõ dưới dạng các từ tiếng Anh đơn giản

  1. >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    1
  2. >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    3

Các toán tử này kết nối các biểu thức Boolean [và các đối tượng] để tạo các biểu thức Boolean phức hợp

Toán tử Boolean trong Python luôn nhận hai biểu thức Boolean hoặc hai đối tượng hoặc kết hợp chúng, vì vậy chúng được coi là toán tử nhị phân

Trong hướng dẫn này, bạn sẽ đề cập đến toán tử

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 của Python, đây là toán tử triển khai hoạt động logic
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
02 trong Python. Bạn sẽ học cách nó hoạt động và cách sử dụng nó

Cách hoạt động của toán tử Python
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2

Với toán tử Boolean

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
02, bạn có thể kết nối hai biểu thức Boolean thành một biểu thức ghép. Ít nhất một biểu thức con phải đúng thì biểu thức ghép mới được coi là đúng và không quan trọng biểu thức nào. Nếu cả hai biểu thức con là sai, thì biểu thức là sai

Đây là logic chung đằng sau toán tử

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
02. Tuy nhiên, toán tử
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 của Python thực hiện tất cả điều này và hơn thế nữa, như bạn sẽ thấy trong các phần sau

Sử dụng
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 với biểu thức Boolean

Bạn sẽ cần hai biểu thức con để tạo biểu thức Boolean bằng cách sử dụng toán tử Python

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 làm trình kết nối. Cú pháp cơ bản cho một biểu thức Boolean với
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 như sau

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
6

Nếu ít nhất một trong các biểu thức con [

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
78 hoặc
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
79] ước lượng thành
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
04, thì biểu thức được coi là
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
04. Nếu cả hai biểu thức con đánh giá là
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
05, thì biểu thức là
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
05. Định nghĩa này được gọi là bao hàm hoặc, vì nó cho phép cả hai khả năng cũng như

Dưới đây là tóm tắt về hành vi của toán tử Python

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2

Kết quả của

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
78Kết quả của
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
79Kết quả của
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
67
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
04
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
04
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
04
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
04
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
05
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
04
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
05
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
04
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
04
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
05
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
05
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
05

Bảng 1. Toán tử logic Python

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2. Bảng sự thật

Bảng này tóm tắt giá trị thực kết quả của một biểu thức Boolean như

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
67 tùy thuộc vào giá trị thực của các biểu thức con của nó

Hãy minh họa các giá trị thực thu được trong Bảng 1 bằng cách mã hóa một số ví dụ thực tế

>>>

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
1

Trong các ví dụ trước, bất cứ khi nào một biểu thức con được đánh giá là

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
04, thì kết quả chung là
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
04. Mặt khác, nếu cả hai biểu thức con được đánh giá là
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
05, thì kết quả chung cũng là
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
05

Loại bỏ các quảng cáo

Sử dụng
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 với các đối tượng chung

Nói chung, các toán hạng của một biểu thức liên quan đến phép toán

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
02 phải có các giá trị Boolean như trong Bảng 1 và kết quả là trả về một giá trị thực. Khi nói đến các đối tượng, Python không nghiêm ngặt lắm về điều đó và triển khai nội bộ một bộ quy tắc để quyết định xem một đối tượng được coi là đúng hay sai

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 phương thức trả về _______105 hoặc một phương thức trả về 0 khi được gọi với đối tượng. Dưới đây là hầu hết các đối tượng tích hợp được coi là sai

  • hằng số được xác định là sai.
    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    101 và
    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    05
  • số không của bất kỳ loại số nào.
    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    103,
    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    104,
    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    105,
    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    106,
    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    107
  • trình tự và bộ sưu tập trống.
    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    108,
    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    109,
    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    110,
    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    111,
    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    112,
    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    113

[]

Nếu các toán hạng liên quan đến một phép toán

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 là các đối tượng thay vì các biểu thức Boolean, thì toán tử
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 của Python trả về một đối tượng đúng hoặc sai, không phải các giá trị
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
04 hoặc
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
05 như bạn mong đợi. Giá trị thực của đối tượng này được xác định theo các quy tắc bạn đã thấy trước đó

Điều này có nghĩa là Python không ép buộc kết quả của hoạt động

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 đối với đối tượng
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
06. Nếu bạn đang kiểm tra hai đối tượng bằng cách sử dụng
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 trong Python, thì toán tử sẽ trả về đối tượng đầu tiên có giá trị là true hoặc đối tượng cuối cùng trong biểu thức, bất kể giá trị true của nó là bao nhiêu

>>>

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}

Trong hai ví dụ đầu tiên, toán hạng đầu tiên [

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
121 và
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
122] là đúng [khác 0], vì vậy toán tử
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 của Python luôn trả về toán hạng đầu tiên

Trong hai ví dụ trước, toán hạng bên trái là sai [một đối tượng trống]. Toán tử Python

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 đánh giá cả hai toán hạng và trả về đối tượng ở bên phải, có thể đánh giá là đúng hoặc sai

Ghi chú. Nếu bạn thực sự cần lấy một trong các giá trị

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
04 hoặc
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
05 từ một biểu thức Boolean liên quan đến các đối tượng, thì bạn có thể sử dụng
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
127, đây là một hàm tích hợp trả về
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
04 hoặc
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
05 tùy thuộc vào giá trị thực của
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
130

Bạn có thể tóm tắt hành vi được hiển thị trong đoạn mã trước như sau

Đối tượng trái Đối tượng phảiKết quả của

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
131
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
132
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
133
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
132, nếu nó ước tính là đúng, nếu không thì
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
133

ban 2. Python

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 Hành vi của toán tử khi kiểm tra đối tượng thay vì biểu thức Boolean

Tóm lại, toán tử

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 của Python trả về đối tượng đầu tiên có giá trị là true hoặc đối tượng cuối cùng trong biểu thức, bất kể giá trị thật của nó là bao nhiêu

Bạn có thể khái quát hóa hành vi này bằng cách xâu chuỗi một số thao tác trong một biểu thức như thế này

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
0

Trong ví dụ này, toán tử

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 của Python trả về toán hạng thực đầu tiên mà nó tìm thấy hoặc toán hạng cuối cùng. Đây là quy tắc ngón tay cái để ghi nhớ cách thức hoạt động của
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 trong Python

Trộn các biểu thức và đối tượng Boolean

Bạn cũng có thể kết hợp các biểu thức Boolean và các đối tượng Python phổ biến trong một hoạt động

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2. Trong trường hợp này, toán tử
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 của Python sẽ vẫn trả về toán hạng thực đầu tiên hoặc toán hạng cuối cùng, nhưng giá trị được trả về có thể là
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
04 hoặc
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
05 hoặc đối tượng mà bạn đang kiểm tra

Kết quả của Biểu thứcKết quả của Đối tượngKết quả của

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
144
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
04
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
04
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
04
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
04
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
05
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
04
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
05
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
05
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
130
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
05
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
04
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
130

bàn số 3. Python

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 Hành vi của toán tử khi kiểm tra đối tượng và biểu thức Boolean

Hãy xem cách nó hoạt động với một số ví dụ

>>>

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
1

Trong Trường hợp 1 và Trường hợp 2, biểu thức con

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
158 được đánh giá là
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
04 và giá trị được trả về là
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
04. Mặt khác, trong Trường hợp 3 và Trường hợp 4, biểu thức con
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
161 được ước tính thành
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
05, vì vậy toán hạng cuối cùng được trả về và bạn nhận được một danh sách trống [
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
110] và một số nguyên [
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
164] thay vì
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
04 hoặc
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
05

Như một bài tập, bạn có thể thử mở rộng Bảng 3 bằng cách đảo ngược thứ tự của các biểu thức trong cột thứ ba, nghĩa là sử dụng

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
167 và cố gắng dự đoán kết quả

Loại bỏ các quảng cáo

Đánh giá ngắn mạch

Đôi khi Python có thể xác định giá trị thực của biểu thức Boolean trước khi nó đánh giá tất cả các biểu thức con và đối tượng liên quan. Chẳng hạn, toán tử

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 của Python dừng đánh giá toán hạng ngay khi nó tìm thấy thứ gì đó được coi là đúng. Ví dụ: biểu thức sau luôn là
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
04

>>>

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
51

Nếu toán hạng đầu tiên trong biểu thức

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 ước tính là đúng, bất kể giá trị của toán hạng thứ hai [
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
171 là
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
05], thì biểu thức được coi là đúng và toán hạng thứ hai không bao giờ được ước tính. Đây được gọi là đánh giá ngắn mạch [lười biếng]

Hãy xem xét một ví dụ khác

>>>

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
7

Trong trường hợp 1, Python đã đánh giá

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
173. Vì nó trả về
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
04 nên toán hạng tiếp theo [
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
175] không được đánh giá. Lưu ý rằng cụm từ
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
176 không bao giờ được in. Cuối cùng, toàn bộ biểu thức được coi là
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
04

Trường hợp 2 đánh giá cả hai hàm, bởi vì toán hạng đầu tiên [______7175] là

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
05. Sau đó, toán tử trả về kết quả thứ hai, nghĩa là giá trị được trả về bởi
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
173, là
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
04

Trường hợp 3 đánh giá cả hai hàm, vì cả hai đều trả về

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
05. Hoạt động trả về giá trị trả về của hàm cuối cùng, đó là
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
05 và biểu thức được coi là
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
05

Trong trường hợp 4, Python chỉ đánh giá hàm đầu tiên là

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
04 và biểu thức là
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
04

Trong đánh giá ngắn mạch [lười biếng], toán hạng thứ hai trên biểu thức Boolean không được đánh giá nếu giá trị của biểu thức có thể được xác định chỉ từ toán hạng đầu tiên. Python [giống như các ngôn ngữ khác] bỏ qua đánh giá thứ hai này để ưu tiên cho hiệu năng, bởi vì đánh giá toán hạng thứ hai sẽ gây lãng phí thời gian CPU không cần thiết

Cuối cùng, khi nói đến hiệu suất khi bạn đang sử dụng toán tử Python

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2, hãy xem xét những điều sau đây

  • Các biểu thức ở bên phải của toán tử Python

    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    2 có thể gọi các hàm thực hiện công việc quan trọng hoặc quan trọng hoặc có tác dụng phụ sẽ không xảy ra nếu quy tắc đoản mạch có hiệu lực

  • Điều kiện có nhiều khả năng đúng hơn có thể là điều kiện trái nhất. Cách tiếp cận này có thể giảm thời gian thực hiện chương trình của bạn, bởi vì theo cách này, Python có thể xác định xem điều kiện có đúng hay không chỉ bằng cách đánh giá toán hạng đầu tiên

Phần tóm tắt

Bạn đã học cách thức hoạt động của toán tử Python

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 và đã thấy một số tính năng và hành vi chính của nó. Bây giờ bạn đã biết đủ để tiếp tục nâng cấp bằng cách học cách sử dụng toán tử trong việc giải quyết các vấn đề trong thế giới thực

Trước đó, hãy tóm tắt lại một số điểm quan trọng về

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 trong Python

  • Nó đáp ứng các quy tắc chung mà toán tử Boolean

    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    02 nên tuân theo. Nếu một hoặc cả hai biểu thức con Boolean là đúng, thì kết quả là đúng. Mặt khác, nếu cả hai biểu thức con là sai, thì kết quả là sai

  • Nó trả về các đối tượng thay vì các giá trị

    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    04 hoặc
    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    05 khi nó kiểm tra các đối tượng Python. Điều này có nghĩa là biểu thức
    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    131 trả về
    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    132 nếu nó được đánh giá là đúng và nếu không thì trả về
    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    133 [bất kể giá trị thực của nó là gì]

  • Nó tuân theo một bộ quy tắc nội bộ Python được xác định trước để xác định giá trị thực của một đối tượng

  • Nó ngừng đánh giá toán hạng ngay khi tìm thấy thứ gì đó được coi là đúng. Điều này được gọi là đánh giá ngắn mạch hoặc lười biếng

Bây giờ là lúc để tìm hiểu xem bạn có thể sử dụng toán tử này ở đâu và như thế nào với sự trợ giúp của một số ví dụ

Bối cảnh Boolean

Trong phần này, bạn sẽ thấy một số ví dụ thực tế về cách sử dụng toán tử

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 của Python và tìm hiểu cách tận dụng hành vi hơi bất thường của toán tử này để viết mã Python tốt hơn

Có hai tình huống chính mà bạn có thể nói rằng bạn đang làm việc trong ngữ cảnh Boolean bằng Python

  1. >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    15 báo cáo. thực hiện có điều kiện
  2. >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    16 vòng lặp. sự lặp lại có điều kiện

Với câu lệnh

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
15, bạn có thể quyết định lộ trình thực thi của chương trình tùy thuộc vào giá trị thực của một số điều kiện

Mặt khác, vòng lặp

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
16 cho phép bạn lặp lại một đoạn mã miễn là điều kiện cho trước vẫn đúng

Hai cấu trúc này là một phần của cái mà bạn gọi là câu lệnh luồng điều khiển. Chúng giúp bạn quyết định lộ trình thực thi chương trình của bạn

Bạn có thể sử dụng toán tử

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 của Python để xây dựng biểu thức Boolean phù hợp để sử dụng với cả câu lệnh
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
15 và vòng lặp
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
16, như bạn sẽ thấy trong hai phần tiếp theo

Loại bỏ các quảng cáo

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
15 Báo cáo

Giả sử bạn muốn đảm bảo rằng một trong hai điều kiện [hoặc cả hai] là đúng trước khi bạn chọn một lộ trình thực thi nhất định. Trong trường hợp này, bạn có thể sử dụng toán tử

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 của Python để kết nối các điều kiện trong một biểu thức và sử dụng biểu thức đó trong câu lệnh
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
15

Giả sử bạn cần nhận được xác nhận từ người dùng để chạy một số hành động tùy thuộc vào câu trả lời của người dùng

>>>

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
6

Tại đây, bạn lấy dữ liệu đầu vào của người dùng và gán nó cho

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
08. Sau đó, câu lệnh
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
15 bắt đầu kiểm tra các điều kiện từ trái sang phải. Nếu ít nhất một trong số chúng được đánh giá là đúng, thì nó sẽ thực thi khối mã
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
15. Câu lệnh
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
11 cũng làm như vậy

Trong lần gọi đầu tiên tới

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
12, đầu vào của người dùng là
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
133, thỏa mãn điều kiện đầu tiên và khối mã
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
15 được thực thi. Trong lần gọi thứ hai, đầu vào của người dùng [
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
15] thỏa mãn điều kiện thứ hai, vì vậy khối mã
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
11 đã chạy. Nếu đầu vào của người dùng không thỏa mãn bất kỳ điều kiện nào, thì không có khối mã nào được thực thi

Một ví dụ khác có thể là khi bạn đang cố xác định xem một số có nằm ngoài phạm vi không. Trong trường hợp này, bạn cũng có thể sử dụng toán tử

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 của Python. Đoạn mã sau kiểm tra xem
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
132 có nằm ngoài phạm vi của
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
19 đến
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
20 không

>>>

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
05

Khi bạn gọi

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
21 bằng
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
22, câu lệnh
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
15 kiểm tra
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
24, là
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
05. Sau đó, nó kiểm tra
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
26, cũng là
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
05. Kết quả cuối cùng là
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
05, vì vậy khối
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
29 đã được thực thi

Mặt khác,

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
30 được đánh giá là
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
04. Sau đó, toán tử
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 của Python thực hiện đánh giá ngắn mạch và điều kiện được coi là
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
04. Khối chính được thực thi và giá trị nằm ngoài phạm vi

Vòng lặp
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
16

Vòng lặp

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
16 là một ví dụ khác về ngữ cảnh Boolean nơi bạn có thể sử dụng toán tử
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 của Python. Bằng cách sử dụng
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 trong tiêu đề của vòng lặp, bạn có thể kiểm tra một số điều kiện và chạy phần thân cho đến khi tất cả các điều kiện đánh giá là sai

Giả sử bạn cần đo nhiệt độ hoạt động của một số thiết bị công nghiệp cho đến khi thiết bị đó nằm trong khoảng từ 100 ºF đến 140 ºF. Để làm như vậy, bạn có thể sử dụng vòng lặp

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
16

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
24

Đây là một ví dụ về đồ chơi gần như bằng mã giả, nhưng nó minh họa ý tưởng. Ở đây, vòng lặp

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
16 đang chạy cho đến khi
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
40 nằm trong khoảng từ 100 ºF đến 140 ºF. Nếu giá trị nhiệt độ nằm ngoài phạm vi, thì phần thân của vòng lặp sẽ chạy và bạn sẽ đo lại nhiệt độ. Khi
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
41 trả về giá trị trong khoảng từ 100 ºF đến 140 ºF, vòng lặp kết thúc. Phép đo nhiệt độ được thực hiện cứ sau 30 giây bởi

Ghi chú. Trong ví dụ mã trước, bạn đã sử dụng chuỗi f của Python để định dạng chuỗi, nếu bạn muốn tìm hiểu sâu hơn về chuỗi f, thì bạn có thể xem Chuỗi f của Python 3. Cú pháp định dạng chuỗi được cải thiện [Hướng dẫn]

Bối cảnh phi Boolean

Bạn có thể tận dụng các tính năng đặc biệt của toán tử Python

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 ngoài ngữ cảnh Boolean. Quy tắc ngón tay cái vẫn là kết quả của các biểu thức Boolean của bạn là toán hạng thực đầu tiên hoặc toán hạng cuối cùng trong dòng

Lưu ý rằng các toán tử logic [bao gồm

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2] được đánh giá trước toán tử gán [
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
45], vì vậy bạn có thể gán kết quả của một biểu thức Boolean cho một biến giống như cách bạn thực hiện với một biểu thức thông thường

>>>

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
10

Ở đây, toán tử

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 hoạt động như mong đợi, trả về toán hạng đúng đầu tiên hoặc toán hạng cuối cùng nếu cả hai được đánh giá là sai

Bạn có thể tận dụng hành vi hơi đặc biệt này của

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 trong Python để triển khai giải pháp Pythonic cho một số vấn đề lập trình khá phổ biến. Hãy cùng xem một số ví dụ thực tế

Loại bỏ các quảng cáo

Giá trị mặc định cho các biến

Một cách phổ biến để sử dụng toán tử

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 của Python là chọn một đối tượng từ một tập hợp các đối tượng theo giá trị thực của nó. Bạn có thể làm điều này bằng cách sử dụng câu lệnh gán

>>>

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
11

Ở đây, bạn đã gán cho

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
132 đối tượng thực sự đầu tiên trong biểu thức. Nếu tất cả các đối tượng [
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
50 và
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
51 trong trường hợp này] là các đối tượng sai, thì toán tử
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 của Python trả về
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
101, là toán hạng cuối cùng. Điều này hoạt động vì toán tử
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 trả về một trong các toán hạng của nó tùy thuộc vào giá trị thực của chúng

Bạn cũng có thể sử dụng tính năng này để gán giá trị mặc định cho các biến của mình. Ví dụ sau đặt

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
132 thành
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
50 nếu
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
50 là đúng và thành
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
58 nếu ngược lại

>>>

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
12

Trong đoạn mã trước, bạn chỉ gán

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
50 cho
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
132 nếu
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
50 được đánh giá là true. Mặt khác,
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
132 được chỉ định
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
58

Giá trị mặc định
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
64

Bạn có thể thao tác giá trị

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
64 của một số chức năng tích hợp tại thời điểm gọi. Các hàm như
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
66 và
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
67, lấy một đối số có thể lặp lại và trả về một giá trị duy nhất, có thể là ứng cử viên hoàn hảo cho kiểu hack này

Nếu bạn cung cấp một iterable trống cho

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
66 hoặc
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
67, thì bạn sẽ nhận được một
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
70. Tuy nhiên, bạn có thể sửa đổi hành vi này bằng cách sử dụng toán tử Python
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2. Hãy xem đoạn mã sau

>>>

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
13

Hành vi mặc định của

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
66 và
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
67 là tăng
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
70 nếu bạn gọi chúng bằng một lần lặp trống. Tuy nhiên, bằng cách sử dụng toán tử
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 của Python, bạn cung cấp giá trị
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
64 mặc định cho các hàm này và ghi đè hành vi mặc định của chúng

Ghi chú. Trong ví dụ mã trước, bạn đã thấy cách Python đưa ra các ngoại lệ khi xảy ra sự cố. Nếu bạn muốn biết thêm về ngoại lệ trong Python, thì bạn có thể xem Giới thiệu về ngoại lệ Python

Đối số mặc định có thể thay đổi

Một vấn đề phổ biến mà các lập trình viên Python mới bắt đầu gặp phải là cố gắng sử dụng các đối tượng có thể thay đổi làm đối số mặc định cho các hàm

Các giá trị có thể thay đổi cho các đối số mặc định có thể giữ nguyên trạng thái giữa các lần gọi. Điều này thường bất ngờ. Nó xảy ra bởi vì các giá trị đối số mặc định chỉ được đánh giá và lưu một lần, nghĩa là khi câu lệnh

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
77 được chạy, không phải mỗi lần hàm kết quả được gọi. Đó là lý do tại sao bạn cần cẩn thận khi thay đổi các giá trị mặc định có thể thay đổi bên trong các hàm

Xem xét ví dụ sau

>>>

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
14

Ở đây, mọi lệnh gọi đến

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
78 đều nối thêm
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
79 vào cuối của ________ 080, bởi vì ________ 080 giữ một tham chiếu đến cùng một đối tượng [mặc định là
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
110]. Bạn không nhận được một
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
83 mới mỗi khi hàm được gọi như bạn mong đợi

Nếu đó không phải là hành vi bạn muốn, thì giải pháp truyền thống [và an toàn nhất] là chuyển giá trị mặc định sang phần thân của hàm

>>>

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
15

Với cách triển khai này, bạn đảm bảo rằng

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
80 được đặt thành một giá trị trống
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
83 mỗi khi bạn gọi
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
78 mà không có đối số, dựa vào giá trị mặc định cho
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
80

Câu lệnh

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
15 trong ví dụ này gần như có thể được thay thế bằng phép gán
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
89. Bằng cách này, nếu không có đối số nào được truyền vào hàm, thì
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
80 sẽ mặc định là
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
101 và toán tử
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 của Python sẽ trả về danh sách trống ở bên phải

>>>

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
16

Tuy nhiên, điều này không hoàn toàn giống nhau. Ví dụ: nếu một

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
83 trống được truyền vào, thì thao tác
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 sẽ khiến hàm sửa đổi và in một
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
83 mới được tạo, thay vì sửa đổi và in
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
83 ban đầu được truyền vào như phiên bản
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
15 sẽ làm

Nếu bạn khá chắc chắn rằng bạn sẽ chỉ sử dụng các đối tượng

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
83 không trống, thì bạn có thể sử dụng phương pháp này. Nếu không, hãy sử dụng phiên bản
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
15

Loại bỏ các quảng cáo

Bộ phận không

Phép chia không có thể là một vấn đề phổ biến khi bạn xử lý các phép tính số. Để tránh vấn đề này, có khả năng bạn sẽ kiểm tra xem mẫu số có bằng

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
103 hay không bằng cách sử dụng câu lệnh
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
15

Hãy xem xét một ví dụ

>>>

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
17

Ở đây, bạn đã kiểm tra nếu mẫu số [

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
51] không bằng
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
103, sau đó bạn trả về kết quả của phép chia. Nếu
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
004 được ước tính thành
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
04, thì
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
006 hoàn toàn trả về
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
101. Hãy xem cách để có được kết quả tương tự, nhưng lần này sử dụng toán tử Python
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2

>>>

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
18

Trong trường hợp này, toán tử

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 của Python đánh giá biểu thức con đầu tiên [
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
004]. Chỉ khi biểu thức con này là
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
05, thì biểu thức con thứ hai [
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
012] mới được đánh giá và kết quả cuối cùng sẽ là phép chia của
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
50 và
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
51

Sự khác biệt với ví dụ trước đó là, nếu

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
004 được ước tính thành
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
04, thì
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
006 trả về
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
04 thay vì
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
101 ngầm định

Nhiều biểu thức trong
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
020

Python cung cấp các biểu thức

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
020, cho phép bạn tạo các hàm ẩn danh đơn giản. Biểu thức
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
022 mang lại một đối tượng chức năng. Loại chức năng này có thể hữu ích nếu bạn muốn xác định chức năng chính và gọi lại đơn giản

Mẫu phổ biến nhất để bạn viết hàm

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
020 là sử dụng một
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
024 làm giá trị trả về. Tuy nhiên, bạn có thể thay đổi điều này và để
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
020 thực thi một số biểu thức bằng cách sử dụng toán tử
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 của Python

>>>

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
19

Với ví dụ này, bạn đã buộc

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
020 chạy hai biểu thức [
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
028 và
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
029]. Nhưng mã này hoạt động như thế nào?

Khi

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 đánh giá hàm đầu tiên, nó nhận được
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
101, là giá trị trả về ẩn cho
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
033. Vì
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
101 được coi là sai, nên
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 tiếp tục đánh giá toán hạng thứ hai của nó và cuối cùng trả về kết quả cho biểu thức Boolean

Trong trường hợp này, giá trị được trả về bởi biểu thức Boolean cũng là giá trị được trả về bởi

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
020

>>>

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
0

Ở đây,

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
037 giữ một tham chiếu đến giá trị được trả về bởi
>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
020, chính là giá trị được trả về bởi biểu thức Boolean

Phần kết luận

Bây giờ bạn đã biết cách thức hoạt động của toán tử Python

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 cũng như cách sử dụng nó để giải quyết một số vấn đề lập trình phổ biến trong Python

Bây giờ bạn đã biết những kiến ​​thức cơ bản về toán tử

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}
2 trong Python, bạn sẽ có thể

  • Sử dụng toán tử Python

    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    2 trong ngữ cảnh Boolean và không phải Boolean

  • Giải quyết một số loại vấn đề lập trình bằng cách sử dụng hiệu quả toán tử Python

    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    2

  • Viết mã Pythonic tốt hơn và nhiều hơn bằng cách tận dụng các tính năng hơi đặc biệt của

    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    2 trong Python

  • Đọc và hiểu rõ hơn mã của người khác khi họ sử dụng toán tử Python

    >>> 2 or 3
    2
    >>> 5 or 0.0
    5
    >>> [] or 3
    3
    >>> 0 or {}
    {}
    
    2

Ngoài ra, bạn đã học một chút về logic Boolean, cũng như một số khái niệm chính của nó trong Python

Đánh dấu là đã hoàn thành

Xem ngay Hướng dẫn này có một khóa học video liên quan do nhóm Real Python tạo. Xem nó cùng với hướng dẫn bằng văn bản để hiểu sâu hơn. Sử dụng Python hoặc Toán tử

🐍 Thủ thuật Python 💌

Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python

Gửi cho tôi thủ thuật Python »

Giới thiệu về Leodanis Pozo Ramos

Leodanis là một kỹ sư công nghiệp yêu thích Python và phát triển phần mềm. Anh ấy là một nhà phát triển Python tự học với hơn 6 năm kinh nghiệm. Anh ấy là một nhà văn đam mê kỹ thuật với số lượng bài báo được xuất bản ngày càng tăng trên Real Python và các trang web khác

» Tìm hiểu thêm về Leodanis

Mỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là

Aldren

Jim

Joanna

Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực

Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Bậc thầy Kỹ năng Python trong thế giới thực
Với quyền truy cập không giới hạn vào Python thực

Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Bạn nghĩ sao?

Đánh giá bài viết này

Tweet Chia sẻ Chia sẻ Email

Bài học số 1 hoặc điều yêu thích mà bạn đã học được là gì?

Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi

Python có phải là ngôn ngữ logic không?

Lập trình logic Python là một mô hình lập trình coi tính toán là suy luận tự động trên cơ sở dữ liệu kiến ​​thức được tạo thành từ các sự kiện và quy tắc . Đó là một cách lập trình và dựa trên logic hình thức.

3 toán tử logic Python là gì?

Python cung cấp ba toán tử logic hoặc boolean, các toán tử "and", "or" và "not" . Chúng hoạt động trên một hoặc nhiều toán hạng và tùy thuộc vào giá trị của chúng, đánh giá là Đúng hoặc Sai.

Cổng logic trong Python là gì?

Cổng logic được sử dụng cho các mạch thực hiện tính toán, lưu trữ dữ liệu hoặc thể hiện lập trình hướng đối tượng, đặc biệt là sức mạnh của tính kế thừa . Có bảy cổng logic cơ bản được định nghĩa là. Cổng AND, cổng OR, cổng NOT, cổng NAND, cổng NOR, cổng XOR, cổng XNOR.

Chủ Đề