Getting list of parameter names inside python function [duplicate]
Well we don't actually need inspect
here.
>>> func = lambda x, y: (x, y)>>> >>> func.__code__.co_argcount2>>> 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,)
For Python 2.5 and older, use func_code
instead of __code__
, and func_defaults
instead of __defaults__
.
locals()
returns a dictionary with local names:
def func(a,b,c): print(locals().keys())
prints the list of parameters. If you use other local variables those will be included in this list. But you could make a copy at the beginning of your function.
If you also want the values you can use the inspect
module
import inspectdef 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)]