Length of arguments of Python function?

19,124

Solution 1

If your method name is sum then sum.func_code.co_argcount will give you number of arguments.

Solution 2

The inspect module is your friend; specifically inspect.getargspec which gives you information about a function's arguments:

>>> def sum(a,b,c):
...     return a + b + c
...
>>> import inspect
>>> argspec = inspect.getargspec(sum)
>>> print len(argspec.args)
3

argspec also contains details of optional arguments and keyword arguments, which in your case you don't have, but it's worth knowing about:

>>> print argspec
ArgSpec(args=['a', 'b', 'c'], varargs=None, keywords=None, defaults=None)

Solution 3

import inspect

print len(inspect.getargspec(sum)[0])
Share:
19,124
Zango
Author by

Zango

.

Updated on June 11, 2022

Comments

  • Zango
    Zango about 2 years

    Possible Duplicate:
    How to find out the arity of a method in Python

    For example I have declared a function:

    def sum(a,b,c):
        return a + b + c
    

    I want to get length of arguments of "sum" function.
    somethig like this: some_function(sum) to returned 3
    How can it be done in Python?

    Update:
    I asked this question because I want to write a function that accepts another function as a parameter and arguments to pass it.

    def funct(anotherFunct, **args): 
    

    and I need to validate:

    if(len(args) != anotherFuct.func_code.co_argcount):
        return "error"
    
  • AnnanFay
    AnnanFay almost 8 years
    What downsides are there in using this method? Given the other answers I assume using inspect is the preferred way. Why is this?