簡體   English   中英

如何獲取函數的關鍵字參數

[英]How to get keyword arguments for a function

>>> def test(arg1, arg2, arg3=None): pass
>>> test.func_code.co_varnames
('arg1', 'arg2, 'arg3')

我想要的是這樣的:

{'args': ('arg1', 'arg2'), 'kwargs': {'arg3': None}}

有沒有辦法做到這一點?

您可以使用inspect.getargspec()獲取函數期望的參數。

>>> inspect.getargspec(test)
ArgSpec(args=['arg1', 'arg2', 'arg3'], varargs=None, keywords=None,
        defaults=(None,))

如您所見, keywords屬性為None因為任何參數都可以作為kwarg傳遞; 如果存在的話,它將包含**kwargs參數的名稱。

為了獲得一個將參數名映射到默認值的字典,您可以將以下代碼as inspect.getargspec()返回的inspect.getargspec()

defaults = dict(zip(*[reversed(l) for l in (as.args, as.defaults or [])]))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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