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)]

Leave a Reply

Your email address will not be published. Required fields are marked *