Đây là cách các toán tử logic boolean hoạt động.
Trong bối cảnh hoạt động Boolean, và cũng có khi biểu thức được sử dụng bởi kiểm soát báo cáo lưu chuyển, các giá trị sau được hiểu là sai: False
, None
, số zero của tất cả loại, và chuỗi rỗng và container (bao gồm các chuỗi, các bộ, danh sách, từ điển, bộ và frozensets). Tất cả các giá trị khác là được hiểu là đúng. (Xem __nonzero__()
phương pháp đặc biệt cho một cách để thay đổi điều này.)
Nhà điều hành not
mang True
nếu đối số của nó là sai, False
khác.
Biểu thức x and y
đánh giá đầu tiên x
; nếu x
là sai, giá trị của nó là được trả lại; nếu không, y
được đánh giá và giá trị kết quả được trả về.
Biểu thức x or y
đánh giá đầu tiên x
; nếu x
là đúng, giá trị của nó là được trả lại; nếu không, y được đánh giá và giá trị kết quả được trả về.
(Lưu ý rằng không phải and
cũng không or
hạn chế giá trị và gõ họ trở về False
và True
, nhưng thay vì trả lại luận đánh giá cuối cùng. Đây là đôi khi hữu ích, ví dụ, nếu s
là một chuỗi rằng nên được thay thế bằng một giá trị mặc định nếu nó là trống rỗng, các biểu s or 'foo'
mang lại giá trị mong muốn. bởi vì not
phải phát minh ra một giá trị dù sao, nó không bận tâm để trả về giá trị so với cùng loại như là đối số của nó, vì vậy ví dụ, not 'foo'
mang False
, không ''
.)
'spam nếu foo == bar hoặc trứng' hiển thị lỗi cú pháp trong python 2.6.5, nhưng 'spam if foo == bar other eggs' hoạt động như dự định. – Zxaos
@Zxaos: Xin lỗi về điều đó. Nó phải là 'else' không' hoặc'. Đã sửa lỗi. –
Trong "kết quả sai ... nếu foo ước tính giá trị falsey" bạn có nghĩa là "spam đánh giá thành giá trị falsey" không? – unutbu