考虑以下python函数:
def fun(x=0,y=1,z=1):
print x,y,z
fun(2)
有没有办法可以在函数中找出实际传递了多少个参数,在上面的例子中是1?
请帮助 谢谢
答案 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}