Length of arguments of Python function?
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])
Comments
-
Zango about 2 years
Possible Duplicate:
How to find out the arity of a method in PythonFor 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 almost 8 yearsWhat downsides are there in using this method? Given the other answers I assume using
inspect
is the preferred way. Why is this?