Curiosamente:¿Cuándo usar == y cuándo usarlo?
>>> a = 123
>>> b = 123
>>> a is b
True
>>> a = 123.
>>> b = 123.
>>> a is b
False
Parece a is b
siendo más o menos define como id(a) == id(b)
. Es fácil hacer errores de esta manera:
basename, ext = os.path.splitext(fname)
if ext is '.mp3':
# do something
else:
# do something else
Algunos nombres inesperadamente terminaron en el bloque else. La solución es simple, deberíamos usar ext == '.mp3'
en su lugar, pero no obstante if ext is '.mp3'
en la superficie parece una buena forma pitónica para escribir esto y es más legible que la forma "correcta".
Dado que las cadenas son inmutables, ¿cuáles son los detalles técnicos de por qué está mal? ¿Cuándo es mejor una verificación de identidad y cuándo es mejor una verificación de igualdad?
* relacionados con: * [? Python '==' vs '' se comparan cadenas, 'es' falla a veces, ¿por qué] (http://stackoverflow.com/questions/1504717/python-vs-is -comparing-strings-is-fails-sometimes-why) –
posible duplicado de [¿Cuándo el operador \ '== \' no es equivalente al operador \ 'is \'? (Python)] (http://stackoverflow.com/questions/3647692/when-is-the-operator-not-equivalent-to-the-is-operator-python) – user
relacionado: http://stackoverflow.com/ a/2577589/674039 – wim