Estoy acostumbrado a ver if obj is None:
en Python, y recientemente encontré if obj is():
. Dado que las tuplas no son mutables, parece una optimización interna razonable en el intérprete de Python que la tupla vacía sea un singleton, lo que permite el uso de is
en lugar de requerir ==
. Pero, ¿esto está garantizado en alguna parte? ¿Desde qué versión del intérprete?comparar el objeto para vaciar la tupla con el operador 'es' en Python 2.x
[editar] la pregunta es importante porque if() no es un singleton y hay una manera de producir una tupla vacía con una dirección diferente, entonces usar is {}
es un error. Si solo está garantizado desde Python 2.x con x> 0, entonces es importante saber el valor de x si necesita asegurar la compatibilidad con versiones anteriores de su código. También es importante saber si esto puede romper su código cuando se utiliza PyPy/jython/IronPython ...
Es, definitivamente, no idiomática. ¿Hay un caso de uso justificable para esto? –
@StevenRumbalski: no hay caso de uso especial. Encontré código usando esto y me pregunté si debería cambiarlo o actualizar mi opinión sobre el operador "es".Tendría sentido implementar() como singleton en el nivel de intérprete ... –