2012-02-15 36 views
10

Giải thích cho hành vi này bằng Python là gì?Toán tử "và" Python có ints

a = 10 
b = 20 
a and b # 20 
b and a # 10 

a and b đánh giá đến 20, trong khi b and a đánh giá đến 10 Are ints tích cực tương đương với True? Tại sao nó lại đánh giá giá trị thứ hai? Bởi vì nó là thứ hai?

Trả lời

16

các documentation giải thích điều này khá tốt:

Biểu thức x and y đánh giá đầu tiên x; nếu x là sai, giá trị của nó được trả về; nếu không, y được đánh giá và giá trị kết quả được trả về.

Và tương tự cho or, đây có thể là câu hỏi tiếp theo trên môi của bạn.

Biểu thức x or y đánh giá đầu tiên x; nếu x là đúng, giá trị của nó được trả về; nếu không, y được đánh giá và giá trị kết quả được trả về.

0

Trong python tất cả những gì không phải là Không, 0, False, "", [],(), {} là True

a và b là readed như True và Đúng trong trường hợp này tương tự cho b và một

và có trong trường hợp này phải mất giá trị đầu tiên

chỉnh sửa: không đầy đủ như trong các ý kiến ​​

+0

Bằng cách "đầu tiên" làm bạn có nghĩa là "thứ hai"? –

+0

Tôi không nghĩ rằng đó là "lấy" giá trị đầu tiên. Tôi nghĩ rằng nó đang đánh giá giá trị thứ hai trong biểu thức. Bất cứ ai có thể chỉ cho tôi một nguồn tài nguyên giải thích điều này? (Cảm ơn Dave!) –

+1

Điều này không đúng. '[]' là 'Sai', ví dụ. Việc đánh giá được thực hiện bằng cách gọi '__nonzero__' trong Python 2 hoặc' __bool__' bằng Python 3. – Dougal

4

Xem docs:

x and y  if x is false, then x, else y 

số nguyên khác không được coi là boolean true, vì vậy bạn có được chính xác hành vi được mô tả trong các tài liệu:

>>> a = 10 
>>> b = 20 
>>> a and b 
20 
>>> b and a 
10 
Các vấn đề liên quan