[pyar] Logica repetida en metodos

Martin Cerdeira martincerdeira en gmail.com
Jue Dic 2 23:39:16 ART 2010


2010/12/2 Lucas Liendo <mindmaster en gmail.com>:
> Hola ! Queria consultarles por una duda, resulta que tengo que hacer algunos
> metodos los cuales todos tienen la misma logica, salvo en un solo punto, el
> cual es una condicion, para resolverlo se me ocurrio algo asi :
>
> def funcion_dep(cond) :
>     if eval(cond) :
>         print "truep"
>     else :
>         print "falsep"
>
> def condicion_1(n1, n2) :
>     if n1 > n2 :
>         return 1
>
>     return 0
>
> def condicion_2(n1, n2) :
>     if n1 < n2 :
>         return 1
>
>     return 0
>
> if __name__ == "__main__" :
>     funcion_dep("condicion_1(1, 2)")
>     funcion_dep("condicion_2(1, 2)")
>
> es decir evaluo la condicion en otro metodo a traves de eval, lo que queria
> saber es si hay otra alternativa al eval (ya que estoy disconforme con esta
> solucion). Bueno eso es todo !
>

Una es:

def condicion_1(n1, n2) :
    if n1 > n2 :
        return 1

    return 0

def condicion_2(n1, n2) :
    if n1 < n2 :
        return 1

    return 0

if __name__ == "__main__" :
    f1 = condicion_1
    f1(1, 2)
    f1 = condicion_2
    f1(1, 2)

O, directamente sin la definición de las funciones:

if __name__ == "__main__" :
    f1 = (lambda n1, n2: int(n1 > n2))
    f1(1, 2)
    f1 = (lambda n1, n2: int(n1 < n2))
    f1(1, 2)

Uso lambda y, hago un int de la evaluación n1>n2 o n1<n2, lo que da 0
si es False y 1 si es True.

Saludos
-------------------------------------
Martín Cerdeira - Software Developer
[web] http://www.codmacs.blogspot.com/
()  ascii ribbon campaign
/\  www.asciiribbon.org



More information about the pyar mailing list