>>> False in [0]
True
>>> type(False) == type(0)
False
Lý do tôi stumbled khi này:Python "in" không kiểm tra loại?
Đối với đơn vị thử nghiệm của tôi, tôi tạo ra danh sách các giá trị mẫu hợp lệ và không hợp lệ cho mỗi loại của tôi. (Tôi có nghĩa là, chúng không phải là 100% tương đương với các loại trăn) Vì vậy, tôi muốn lặp lại danh sách tất cả các giá trị và mong đợi chúng vượt qua nếu chúng nằm trong các giá trị hợp lệ của tôi, và mặt khác, thất bại nếu họ không. Điều đó không làm việc rất tốt bây giờ:
>>> valid_values = [-1, 0, 1, 2, 3]
>>> invalid_values = [True, False, "foo"]
>>> for value in valid_values + invalid_values:
... if value in valid_values:
... print 'valid value:', value
...
valid value: -1
valid value: 0
valid value: 1
valid value: 2
valid value: 3
valid value: True
valid value: False
Tất nhiên là tôi không đồng ý với hai giá trị 'hợp lệ' ngoái.
Điều này có nghĩa là tôi thực sự phải lặp qua giá trị hợp lệ của mình và so sánh loại không?
+1 Hmm, tôi không bao giờ mặc dù con trăn của 'in' không kiểm tra loại. Rất thú vị . . . – OnesimusUnbound
@BenJames, hmm, tôi tự hỏi làm thế nào nó sẽ phá vỡ việc gõ vịt bằng Python? – OnesimusUnbound