[pyar] Como puedo pasarle argumentos a una funcion ?

fisa fisadev en gmail.com
Jue Abr 14 19:39:28 ART 2011


2011/4/14 Emiliano Dalla Verde Marcozzi <edvm en airtrack.com.ar>

> Buenas querida lista,
> Tengo el siguiente code incompleto ...
>
> ef process(action, args):
>     ''' Dados action y argumentos, me fijo que action sea una funcion
> definida,
>     caso afirmativo, llamo a la funcion con args
>     '''
>     if action is None: # si no tengo action, retorno
>         log.msg('action es None, retorno')
>         return
>
>     if action not in metodos.keys():
>         log.msg('%s no es un metodo definido' % action)
>         return
>
>     method = metodos[action] # guardo referencia al metodo / funcion
>
>     if args is not None:
>         # cantidad de parametros de nuestra funcion, si es que acepta
>         argslen = getattr(method.func_code, 'co_argcount', None)
>         if argslen is not None:
>             # ACA FUI :)
>
> process toma dos parametros, action es un string cual es el nombre
> del metodo al cual se va a llamar, y args son los argumentos que se
> le van a pasar al metodo action. El problema que tengo es justamente
> pasarle los argumentos a la funcion (chan !)
> Ej:
> 1- method = metodos[action] #aca guardo la funcion, puedo llamarla por
> method()
> 2- method(args) # args es una lista, aca se me jodio todo.
>
> Puede ocurrir, que method guarde referencia a una funcion 'foobar' definida
> como:
>
> def foobar(arg1, arg2):
>     return arg1 + arg2
>
> Mi problema, o lo que quiero intentar hacer, es no tener que redefinir
> foobar para
> que tome una lista, o escribir otra funcion que tome como argumento la
> lista y llame
> a foobar como corresponde, sino, de alguna forma iterar por la lista, y
> asumir que el
> primer valor de la lista corresponde al primer argumento de la funcion, el
> segundo
> valor de la lista corresponde al segundo argumento de la funcion y asi ....
>
> Le heche un ojo a inspect de la std library, y no encontre forma de como
> lograrlo,
> ideas ? ^^''
> Gracias de antemano,
>
>
> --
> *Emiliano Dalla Verde Marcozzi*
> Encargado de IT y Python Ninja Developer
>
>
>
> San Juan 4879
> Rosario. Argentina
> Tel. (+54) 341 437 6878
> www.airtrack.com.ar
>
> "Chuck Norris doesn't need a debugger, he just stares down the bug until
> the code confesses."
>
> - proyectos: https://bitbucket.org/edvm
>
>
> _______________________________________________
> 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/
>


ejecuta esto y te vas a dar cuenta :)

def mostrar(*args, **kargs):
   print args
   print kargs

mostrar(1, 2)
mostrar(a=1, b=2)
mostrar(1, 2, a=3, b=4)
mostrar(*[1, 2])
mostrar(**{'a': 1, 'b': 2})
mostrar(*[1, 2], **{'a': 3, 'b': 4})

-- 
fisa  -  Juan Pedro Fisanotti
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20110414/21ff74e9/attachment.html>


More information about the pyar mailing list