[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