Getting list of parameter names inside python function


Is there an easy way to be inside a python function and get a list of the parameter names?

For example:

def func(a,b,c):
    print magic_that_does_what_I_want()

>>> func()


Asked By: R S



locals() returns a dictionary with local names:

def func(a, b, c):

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.

Answered By: unbeknown
import inspect

def func(a,b,c=5):

inspect.getargspec(func)  # inspect.signature(func) in Python 3

(['a', 'b', 'c'], None, None, (5,))
Answered By: Oli

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)]
Answered By: kmkaplan

Well we don’t actually need inspect here.

>>> func = lambda x, y: (x, y)
>>> func.__code__.co_argcount
>>> 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__

For Python 2.5 and older, use func_code instead of __code__, and func_defaults instead of __defaults__.

Answered By: simplyharsh
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.