Python函数的参数长度?

时间:2010-10-12 11:05:06

标签: python function parameters arguments

  

可能重复:
  How to find out the arity of a method in Python

例如我已经声明了一个函数:

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

我想得到“和”函数的长度。
像这样的somethig:some_function(sum)返回3
如何在Python中完成?

更新
我问了这个问题,因为我想编写一个函数,接受另一个函数作为参数和参数来传递它。

def funct(anotherFunct, **args): 

我需要验证:

if(len(args) != anotherFuct.func_code.co_argcount):
    return "error"

3 个答案:

答案 0 :(得分:13)

inspect模块是你的朋友;特别是inspect.getargspec,它为您提供有关函数参数的信息:

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

argspec还包含可选参数和关键字参数的详细信息,在您的情况下,您没有,但值得了解:

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

答案 1 :(得分:5)

如果您的方法名称为sum,那么sum.func_code.co_argcount会为您提供一些参数。

答案 2 :(得分:2)

import inspect

print len(inspect.getargspec(sum)[0])