thể trùng lặp:
Python “is” operator behaves unexpectedly with integersTại sao (0-6) là -6 = Sai?
Hôm nay tôi đã cố gắng để gỡ lỗi dự án của tôi và sau một vài tiếng đồng hồ phân tích tôi đã nhận điều này:
>>> (0-6) is -6
False
nhưng,
>>> (0-5) is -5
True
Bạn có thể giải thích cho tôi không, tại sao? Có thể đây là một loại lỗi hoặc hành vi rất lạ.
> Python 2.7.3 (default, Apr 24 2012, 00:00:54) [GCC 4.7.0 20120414 (prerelease)] on linux2
>>> type(0-6)
<type 'int'>
>>> type(-6)
<type 'int'>
>>> type((0-6) is -6)
<type 'bool'>
>>>
cũng thats hết sức wacky – Wug
Điều gì khiến bạn sử dụng 'is' ngay từ đầu? Nó không phải là cái gì đó nên thường được sử dụng trong Python, ngoài trường hợp 'is/is None '. –
@ bình luận của Russel chạm vào móng trên đầu - vấn đề là ai đó dường như đang sử dụng "là" để so sánh các con số và mong đợi nó hoạt động như '=', một kỳ vọng không chính xác. – LarsH