Getting list of parameter names inside python function
Getting list of parameter names inside python function
Well we dont actually need inspect
here.
>>> 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,)
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.
Getting list of parameter names inside python function
If you also want the values you can use the inspect
module
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)]