tipos propias procedimientos otra matematicas llamar lista funciones funcion dentro definir python parameters

propias - llamar funciones dentro de funciones python



Obtención de la lista de nombres de parámetros dentro de la función python (4)

Posible duplicado:
Obtención de nombres de parámetros de método en python

¿Hay una manera fácil de estar dentro de una función de python y obtener una lista de los nombres de los parámetros?

Por ejemplo:

def func(a,b,c): print magic_that_does_what_I_want() >>> func() [''a'',''b'',''c'']

Gracias


Bueno, en realidad no necesitamos inspect aquí.

>>> func = lambda x, y: (x, y) >>> >>> func.__code__.co_argcount 2 >>> func.__code__.co_varnames (''x'', ''y'') >>> >>> def func2(x,y=3): ... print(func2.__code__.co_varnames) ... pass # Other things ... >>> func2(3,3) (''x'', ''y'') >>> >>> func2.__defaults__ (3,)

Para Python 2.5 y func_code anteriores, use func_code lugar de __code__ , y func_defaults lugar de __defaults__ .


Si también desea los valores puede utilizar el módulo de inspect

import inspect def func(a, b, c): frame = inspect.currentframe() args, _, _, values = inspect.getargvalues(frame) print ''function name "%s"'' % inspect.getframeinfo(frame)[2] for i in args: print " %s = %s" % (i, values[i]) return [(i, values[i]) for i in args] >>> func(1, 2, 3) function name "func" a = 1 b = 2 c = 3 [(''a'', 1), (''b'', 2), (''c'', 3)]


locals() (docs para Python 2 , Python 3 ) devuelve un diccionario con nombres locales:

def func(a,b,c): print locals().keys()

Imprime la lista de parámetros. Si utiliza otras variables locales, se incluirán en esta lista. Pero podría hacer una copia al comienzo de su función.


import inspect def func(a,b,c=5): pass inspect.getargspec(func) # inspect.signature(func) in Python 3 ([''a'', ''b'', ''c''], None, None, (5,))