[pyar] IF de una línea

Carlos Joel Delgado Pizarrro carlosj2585 en gmail.com
Dom Oct 17 14:30:14 ART 2010


El 17 de octubre de 2010 08:47, david weil <tenuki en gmail.com> escribió:

> 2010/10/15 Diego E. Ahumada <eddie.cpp en gmail.com>:
> > 2010/10/15 Carlos Joel Delgado Pizarrro <carlosj2585 en gmail.com>
> >> El 15 de octubre de 2010 17:43, Carlos Do Carmo <cdocarmo en cdsoft.com.uy
> >
> >> escribió:
> >>> xResultado = "S" if (xValor != False) else "N"
> >>
> >> Yo lo uso así:
> >> resultado = ("Valor si es falso", "Valor si es verdadero")[Condicion]
>
> > Esta muy buena esa forma, pero para que quede limpio requiere que la
> > condición sea numérica.
> > En mi caso la variable es booleana.
>
> Otro problema, es que no es exactamente lo mismo que el " .. if ..
> else .." porque no es lazy:
>
> Python 2.6.6 (r266:84292, Sep 15 2010, 16:22:56)
> [GCC 4.4.5] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
> >>> def f():
> ...     print 'f'
> ...
> >>> def g():
> ...     print 'g'
> ...
> >>> r = f() if True else g()
> f
> >>> r = (g(), f())[True]
> g
> f
>
> (aca se ve que ambas, f y g se ejecutan en el segundo caso, aunque r
> quede asignada al valor correcto).
>

Prueba cambiando los print dentro de las funciones con return, asì:

>>> def f():
    return "F"

>>> def g():
    return "G"

>>> x = (f(), g())[True]
>>> print x
G
>>>

El tiro es que (valor_si_falso, valor_si_verdadero)[condicion] es una tupla
y como False y True son enteros que valen 0 y 1 respectivamente, lo que se
hace al analizar la condición es obtener la posición del elemento dentro de
la tupla, si la condicion resulta False, se toma el elemento en la posición
0 de la tupla, y si resulta True, se toma el elemento en la posición 1, es
por eso que la "sintaxys" en este caso es poner primero el valor que se
obtendra de resultar False la condición.

-- 
Saludos!

————————————————–
Carlos Joel Delgado Pizarro
http://carlosj2585.wordpress.com
http://pycj.wordpress.com (Python!)
PLUG - Peruvian Linux Users Group http://www.linux.org.pe
Mosoq Kallpa – Linux Users Group http://www.mosoqkallpa.org/
Linux User Registered # 460895
Ubuntu User Registered # 28720
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20101017/7cacc079/attachment.html>


More information about the pyar mailing list