Python - 查找函数内传递的参数数量

时间:2017-03-09 09:15:49

标签: python

想象一下,我想定义一个具有默认值的所有参数的函数:

def fun(a=2, b=1):
    ...

函数内部的逻辑是:如果没有传递,则使用默认值;如果只传递a,那么b总是等于a / 2;如果a和b都通过,则使用传递的值。

完成此功能的问题在于,似乎很难区分(例如) fun(4) fun(4,1)之间的区别,因为我不知道 b = 1 是在外面提供还是仅为默认值。

一种显而易见的方法是使用* args,但是,在我的情况下,我想保留默认值和名称。因此,似乎唯一的出路是知道内部 fun()在调用时传递了多少个参数。我想可能有一些系统功能可供使用,但我没有成功找到它们。不知道这项工作怎么可能会有所帮助。

谢谢! :)

1 个答案:

答案 0 :(得分:2)

您可以(例如)将b的默认值设为None,然后在函数内部计算b应该采用的值。

def fun(a=2, b=None):
    if b is None:
        b = a/2
    ...

这会给你:

f()    : a=2, b=1
f(4)   : a=4, b=2
f(4,1) : a=4, b=1