簡體   English   中英

統計arguments實際傳給了一個python function

[英]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)

不完全是您要求的,但實現此目的的一種簡單方法是使用裝飾器計算argskwargs的數量,然后將其傳遞給 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM