Toán tử lôgic của Python và hoặc và không (kết hợp lôgic, phân tách, phủ định)

Kinh doanh

Python cung cấp các toán tử logic để thực hiện các phép toán logic (Boolean).(and,or,not)
Nó được sử dụng để mô tả mối quan hệ giữa nhiều điều kiện trong một câu lệnh if.

Phần này mô tả những điều sau đây.

  • ngã tư:and
  • bổ sung hợp lý:or
  • từ chối:not
  • and,or,notƯu tiên điều hành

Ngoài ra, những điểm sau đây được giải thích là những cảnh báo.

  • Toán tử logic cho các đối tượng kiểu khác với bool
  • and,orCác giá trị trả về này không nhất thiết phải thuộc kiểu bool.
  • Ngắn mạch (đánh giá ngắn mạch)

ngã tư:and

và trả về tích lôgic của hai giá trị.

print(True and True)
# True

print(True and False)
# False

print(False and True)
# False

print(False and False)
# False

Trong thực tế, nó thường được sử dụng không phải cho true hoặc false, mà cho các biểu thức điều kiện sử dụng toán tử so sánh. Đối với thông tin của bạn, các toán tử so sánh như sau.

  • <
  • >
a = 10
print(0 < a)
# True

print(a < 100)
# True

print(0 < a and a < 100)
# True

và có thể được nối như sau.

print(0 < a < 100)
# True

bổ sung hợp lý:or

hoặc trả về OR logic của hai giá trị.

print(True or True)
# True

print(True or False)
# True

print(False or True)
# True

print(False or False)
# False

từ chối:not

not “trả về phủ định của giá trị; true và false được đảo ngược.

print(not True)
# False

print(not False)
# True

and,or,notƯu tiên điều hành

Thứ tự ưu tiên của các toán tử logic này như sau: not là cao nhất.

  1. not
  2. and
  3. or

Trong đoạn mã mẫu sau, biểu thức trên được hiểu như thể nó là biểu thức bên dưới. Vì không có vấn đề gì với các dấu ngoặc đơn, có thể dễ dàng mô tả rõ ràng chúng hơn trong các trường hợp như ví dụ này.

print(True or True and False)
# True

print(True or (True and False))
# True

Nếu bạn muốn hoạt động hoặc trước và, hãy sử dụng dấu ngoặc đơn ().

print((True or True) and False)
# False

<,>Các toán tử so sánh này thậm chí có mức độ ưu tiên cao hơn không. Do đó, dấu ngoặc đơn không cần thiết cho mỗi phép toán so sánh, như trường hợp trong ví dụ trên.

print(0 < a and a < 100)
# True

Xem tài liệu chính thức bên dưới để biết tóm tắt về ưu tiên toán tử trong Python.

Toán tử logic cho các đối tượng kiểu khác với bool

With these logical operators, not only bool types (true, false), but also numbers, strings, lists, etc. are processed as boolean values.

Các đối tượng sau đây được coi là sai trong các phép toán logic của Python.

  • Các hằng số được xác định là sai:None,false
  • Số 0 trong các kiểu số:0,0,0j,Decimal(0),Fraction(0, 1)
  • Chuỗi hoặc bộ sưu tập trống:',(),[],{},set(),range(0)

Tất cả các giá trị khác được coi là đúng.

Hàm bool () có thể được sử dụng để lấy giá trị boolean của một đối tượng. Lưu ý rằng chuỗi ‘0’ hoặc ‘False’ được coi là đúng.

print(bool(10))
# True

print(bool(0))
# False

print(bool(''))
# False

print(bool('0'))
# True

print(bool('False'))
# True

print(bool([]))
# False

print(bool([False]))
# True

Để xử lý ‘0’ hoặc ‘false’ trong một chuỗi là false, hãy sử dụng distutils.util.strtobool ().

and,orCác giá trị trả về này không nhất thiết phải thuộc kiểu bool.

Đây là một ví dụ về một đối tượng không phải là kiểu bool, hiển thị kết quả của mỗi toán tử trên một giá trị số.

x = 10  # True
y = 0  # False

print(x and y)
# 0

print(x or y)
# 10

print(not x)
# False

Như bạn có thể thấy từ ví dụ trên, và và hoặc trong Python không trả về true hoặc false của kiểu bool, nhưng trả về giá trị ở bên trái hoặc bên phải tùy thuộc vào việc nó đúng hay sai. Ví dụ là số, nhưng điều tương tự cũng áp dụng cho các kiểu khác như chuỗi và danh sách. Ngẫu nhiên, không trả về true hoặc false của kiểu bool.

Các định nghĩa về giá trị trả về của và và hoặc như sau.

The expression x and y first evaluates x; if x is false, its value is returned; otherwise, y is evaluated and the resulting value is returned.

The expression x or y first evaluates x; if x is true, its value is returned; otherwise, y is evaluated and the resulting value is returned.

6.11. Boolean operations — Expressions — Python 3.10.1 Documentation

Khi các giá trị của biểu thức bên trái và bên phải là true và false riêng biệt, các giá trị trả về rất dễ hiểu. Mặt khác, nếu cả hai đều đúng hoặc cả hai đều sai, giá trị trả về sẽ khác nhau tùy thuộc vào đơn đặt hàng.

Nếu bạn sử dụng nó như một biểu thức điều kiện trong câu lệnh if, v.v., kết quả được đánh giá là một giá trị boolean và được xử lý, vì vậy bạn không cần phải lo lắng về điều đó, nhưng nếu bạn sử dụng giá trị trả về để xử lý thêm, bạn cần phải cẩn thận.

x = 10  # True
y = 100  # True

print(x and y)
# 100

print(y and x)
# 10

print(x or y)
# 10

print(y or x)
# 100
x = 0  # False
y = 0.0  # False

print(x and y)
# 0

print(y and x)
# 0.0

print(x or y)
# 0.0

print(y or x)
# 0

print(bool(x and y))
# False

Nếu bạn muốn coi nó là true hoặc false, bạn có thể làm như trong ví dụ cuối cùng.
bool(x and y)

Các giá trị trả về của và và hoặc được tóm tắt trong bảng dưới đây.

xyx and yx or y
truefalseyx
falsetruexy
truetrueyx
falsefalsexy

Ngắn mạch (đánh giá ngắn mạch)

Như bạn có thể thấy từ bảng trên, nếu x sai trong x và y hoặc nếu x đúng trong x hoặc y, giá trị trả về sẽ là x bất kể giá trị của y.

Trong trường hợp này, y không được đánh giá.

and,orLưu ý rằng nếu bạn gọi một hàm hoặc phương thức ở phía bên phải của các quy trình này để thực hiện một số xử lý, quy trình có thể không được thực thi tùy thuộc vào kết quả ở phía bên trái.

def test():
    print('function is called')
    return True

print(True and test())
# function is called
# True

print(False and test())
# False

print(True or test())
# True

print(False or test())
# function is called
# True
Copied title and URL