[pyar] Uso de is/is not

Daniel Moisset dmoisset en machinalis.com
Lun Jul 19 17:40:04 ART 2010


2010/7/19 QliX=D! [aka EHB] <qlixed en gmail.com>:
> Gente,
>   Consulta para los experimentados y "armoniosos del lenguaje" :D, es
> equivalente esto:
>
> if not object is None:
>
> o
>
> if object is not None:
>
> No tengo mucha idea de como lo resuelve el parser en el primer caso...
> es algo como:
> if not(object) is None
> o
> if not (object is None) ???

El parser agrupa por orden de precedencia, el de
http://docs.python.org/reference/expressions.html#summary

por lo tanto

  not object is None,
asocia igual que
  not (object is None)

dado que "Comparisons, including membership tests and identity tests,"
pegan mas fuerte que "Boolean NOT"

> En el segundo caso tengo entendido que 'is not' es como un operador, verdad?

Correcto, aparece en
http://docs.python.org/reference/expressions.html#isnot y es una
sintaxis especial

no es para nada equivalaente "x is not y" a "x is (not y)"

> Realmente leer if object is not None, me choca un poco.. jeje, me
> resulta mas natural la otra construccion, pero no se si generalmente
> es equivalente, hice un par de pruebas y pareceria que si.

Es syntactic sugar, y hace que se lea mas "natural" (donde "natural"
es "parecido al ingles" en este caso).

en algun modo es lo mismo que tener un operador !=; siempre podrías
escribir "not (a == b)" en vez de "a != b"; pero tener el operador
infijo que hace la negacion a veces es mas claro/comodo... lo que
confundo un poco acá es que el operador tiene dos palabras, y una de
ellas es tambien el nombre de otro operador unario que no tiene nada
que ver :)


Saludos,
  D.



More information about the pyar mailing list