Có đảm bảo rằng False == 0
và True == 1
, bằng Python không? Ví dụ, theo bất kỳ cách nào, đảm bảo rằng mã sau sẽ luôn tạo ra các kết quả tương tự, bất kể phiên bản Python (cả hiện tại và, có khả năng, các phiên bản tương lai) là gì?Là False == 0 và True == 1 trong Python một chi tiết thực hiện hoặc nó được đảm bảo bởi ngôn ngữ?
0 == False # True
1 == True # True
['zero', 'one'][False] # is 'zero'
Mọi tham chiếu đến tài liệu chính thức sẽ được đánh giá cao!
Chỉnh sửa: Như đã lưu ý trong nhiều câu trả lời, bool
được kế thừa từ int
. Do đó, câu hỏi có thể được gọi lại là: "Tài liệu có chính thức nói rằng các lập trình viên có thể dựa vào các phép toán boolean kế thừa từ các số nguyên, với các giá trị 0
và 1
?". Câu hỏi này có liên quan để viết mã mạnh mẽ không bị lỗi vì chi tiết triển khai!
Nếu bạn nghi ngờ đó là chi tiết, tại sao không tránh chi tiết? Tại sao hỏi một câu hỏi như thế này? Đó là tầm thường để tránh tùy thuộc vào loại chức năng này. Ví dụ của bạn, sử dụng một từ điển thay vì một danh sách. Bạn gặp vấn đề gì? Tại sao lại hỏi điều này? –
@ S.Lott: Có nhiều lý do để đặt câu hỏi ở trên. Vì vậy, có những trường hợp mà dựa vào booleans là số nguyên làm cho mã của bạn đơn giản hơn: bạn có phải thay đổi nó? Hoặc, bạn có thể phát hiện các vị trí trong một mã được viết bởi người khác dựa trên các boolean là số nguyên: bạn có làm gián đoạn những gì bạn đang sửa đổi trong mã để "sửa" mã hiện tại hay không? ? Có rất nhiều ví dụ khác. Nói chung, nó là tốt để biết các quy tắc của trò chơi, để bạn có thể chơi nó tốt và chương trình một cách âm thanh. – EOL
@EOL: bạn có thể cung cấp một ví dụ về "dựa vào booleans là số nguyên làm cho mã của bạn đơn giản hơn"? Tôi không thể tưởng tượng một điều như vậy. "Bạn có làm gián đoạn những gì bạn đang sửa đổi trong mã để" sửa chữa "mã hiện tại, hoặc bạn có thể yên tâm rằng mã hóa hiện tại là âm thanh?" Câu hỏi này có vẻ kỹ thuật, không phải là "làm cách nào để đối phó?" Các quy tắc rất đơn giản: ** không phụ thuộc vào chi tiết triển khai **. Vậy tại sao hỏi về một chi tiết thực hiện? –