[pyar] De Alejandro: otra duda

German Jimenez germanjimenez84 en gmail.com
Mar Jun 25 23:18:32 ART 2013


Es de muy noob esto pero no logro intuir porque sería el switch-case
simulado con un diccionario mas eficiente que el if-elif, pensé que sería
al revés, o una comparación de igualdad es mas lenta que una búsqueda en un
diccionario + una llamada a una función?

def ifelif(n):

    if n == 0: pass

    elif n == 1: pass


def simulswitch(n):

    def foo(): pass

    def bar(): pass

    dic = {0:foo,1:bar}

    dic[n]()


¿He cometido algún error en hacer ésta comparación?

El 25 de junio de 2013 22:08, Roberto Alsina
<ralsina en netmanagers.com.ar>escribió:

>  On 25/06/13 22:02, Pablo M. Mana wrote:
>
>  Lo mas similar al switch - case en python es el: if elif else. Es muy
> versatil, 2 Bloques al precio de uno ;)
>
>
> La diferencia es que el if/elif es mucho mas ineficiente.
>
> Para hacer el equivalente de switch/case con valores constantes, se puede
> usar un diccionario.
> Por ejemplo, si querés que cuando x vale 1 se ejecute foo() y cuando vale
> 2 bar():
>
> d = {1: foo, 2: bar}
>
> resultado = d[x]()
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20130625/35fa7d24/attachment.html>


More information about the pyar mailing list