Tò mò:Thời điểm sử dụng == và thời điểm sử dụng?
>>> a = 123
>>> b = 123
>>> a is b
True
>>> a = 123.
>>> b = 123.
>>> a is b
False
vẻ a is b
được nhiều hơn hoặc ít hơn định nghĩa là id(a) == id(b)
. Nó rất dễ dàng để làm cho lỗi theo cách này:
basename, ext = os.path.splitext(fname)
if ext is '.mp3':
# do something
else:
# do something else
Một số tên bất ngờ kết thúc trong khối khác. Việc sửa chữa là đơn giản, chúng ta nên sử dụng ext == '.mp3'
thay vào đó, nhưng dù sao if ext is '.mp3'
trên bề mặt có vẻ giống như một cách tốt đẹp pythonic để viết này và nó dễ đọc hơn cách "đúng".
Vì chuỗi là bất biến, các chi tiết kỹ thuật về lý do sai? Khi nào thì kiểm tra danh tính tốt hơn và khi nào thì kiểm tra bình đẳng tốt hơn?
* related: * [Python '==' vs 'là' so sánh các chuỗi, 'là' không thành công đôi khi, tại sao?] (Http://stackoverflow.com/questions/1504717/python-vs-is -comparing-strings-is-fail-sometimes-why) –
có thể trùng lặp của [Khi nào toán tử \ '== \' không tương đương với toán tử \ 'is \'? (Python)] (http://stackoverflow.com/questions/3647692/when-is-the-operator-not-equivalent-to-the-is-operator-python) – user
liên quan: http://stackoverflow.com/ a) 2577589/674039 – wim