计算实际传递给python函数的参数数

计算实际传递给python函数的参数数,python,function,count,arguments,default,Python,Function,Count,Arguments,Default,我想检索已传递给Python函数的参数数。事实上,我正在用Python编写一个Matlab代码,在Matlab中,代码行是: if (nargin > 2) ... end 我想在Python中使用具有以下形式的函数执行同样的操作:def my_func(a,b,c=3,d=4,…) 调用它时,我将能够检索传递的参数数,例如: my_func(1,2)将返回2 my_func(1,2,3)将返回3 my_func(1,2,3,4)将返回4等 我看过一些主题,但只给出了参数的数量和

我想检索已传递给Python函数的参数数。事实上,我正在用Python编写一个Matlab代码,在Matlab中,代码行是:

if (nargin > 2)
    ...
end
我想在Python中使用具有以下形式的函数执行同样的操作:
def my_func(a,b,c=3,d=4,…)

调用它时,我将能够检索传递的参数数,例如:

my_func(1,2)
将返回2

my_func(1,2,3)
将返回3

my_func(1,2,3,4)
将返回4等

我看过一些主题,但只给出了参数的数量和函数的描述,而没有给出在脚本中调用函数时传递的参数的数量

我希望我能清楚地解释我的问题

致以最良好的祝愿,
MOCHON Rémi

并不是您想要的,但实现这一点的一个简单方法是使用装饰器计算
arg
kwargs
的数量,然后将其传递给函数

装饰器将如下所示:

def count_nargin(函数):
def内部(*args,**kwargs):
纳金=len(args)+len(kwargs)
返回函数(*args,**kwargs,nargin=nargin)
返回内部
然后,您必须修改函数以接受
nargin
参数:

@count\u nargin
def my_func(a、b、c=3、d=4、nargin=None):
印刷品(纳金)
例如,调用上述函数将返回:

>>我的函数(1,2)
2.
>>>my_func(1,2,3)
3.

我认为这是不可能的。尽管这种方法可能适用于某些情况,但请在代码中明确检查接收到的值是否与指定的默认值完全相等:)