找出传递给函数的参数数量,该函数由python中的参数的默认值组成

时间:2011-07-05 08:18:50

标签: python

考虑以下python函数:

def fun(x=0,y=1,z=1):
  print x,y,z

fun(2)

有没有办法可以在函数中找出实际传递了多少个参数,在上面的例子中是1?

请帮助 谢谢

3 个答案:

答案 0 :(得分:1)

查看inspect模块

import inspect
inspect.getargspec(someMethod)
  

获取Python函数参数的名称和默认值。返回四个元组的元组:( args,varargs,keywords,defaults)。 args是参数名称的列表(它可能包含嵌套列表)。 varargs和keywords是*和**参数的名称或None。 defaults是默认参数值的元组,如果没有默认参数,则为None;如果这个元组有n个元素,它们对应于args中列出的最后n个元素。

答案 1 :(得分:1)

>>> def fun(x=0,y=1,z=1):
...   print x,y,z
... 
>>> func = fun
>>> func.func_code.co_argcount
3
>>> func.func_code.co_varnames
('x', 'y', 'z')

您也可以尝试检查模块

>>> import inspect
>>> inspect.getargspec(func).args
['x', 'y', 'z']
>>> inspect.getargspec(func)
ArgSpec(args=['x', 'y', 'z'], varargs=None, keywords=None, defaults=(0, 1, 1))

答案 2 :(得分:0)

你看起来像是:

def fun(**kwargs):
    arg_count = len(kwargs)
    print("Function called with",arg_count,"arguments")
    params = {"x": 0, "y": 1, "z":1} #defaults
    params.update(kwargs)
    print("Now arguments are", params, )

fun(x=2)

输出:

Function called with 1 arguments
Now arguments are {'y': 1, 'x': 2, 'z': 1}
相关问题