[英]Count the number of arguments actually passed to a python function
我想檢索已傳遞給 Python function 的 arguments 的編號。實際上我在 Python 和 Matlab 中編寫了 Matlab 代碼,代碼行是:
if (nargin > 2)
...
end
我想在 Python 中使用具有以下形式的 function 做同樣的事情: def my_func(a,b,c=3,d=4, ...):
調用它時,我將能夠檢索通過的號碼 arguments,例如:
my_func(1,2)
會返回 2
my_func(1,2,3)
會返回 3
my_func(1,2,3,4)
會返回 4 等等。
我看過一些主題,但只給出了 arguments 的編號和 function 的描述,而沒有在腳本中調用它時傳遞的 arguments 的編號。
我希望我能清楚地解釋我的問題。
最好的問候, MOCHON Rémi
下面的代碼將為您工作
def param_count(*args):
return len(args)
不完全是您要求的,但實現此目的的一種簡單方法是使用裝飾器計算args
和kwargs
的數量,然后將其傳遞給 function。
裝飾器將如下所示:
def count_nargin(func):
def inner(*args, **kwargs):
nargin = len(args) + len(kwargs)
return func(*args, **kwargs, nargin=nargin)
return inner
然后,您必須修改您的 function 以接受nargin
參數:
@count_nargin
def my_func(a,b,c=3,d=4,nargin=None):
print(nargin)
例如調用上面的 function 返回:
>>> my_func(1,2)
2
>>> my_func(1,2,3)
3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.