pla*_*etp 5 python arguments function
我正在尝试使用__defaults__
函数对象的属性来获取参数的默认值.它适用于这种情况:
>>> def test(x, y=1): pass
...
>>> test.__defaults__
(1,)
Run Code Online (Sandbox Code Playgroud)
但为此它没有:
>>> def test(*args, y=1): pass
...
>>> test.__defaults__
>>>
Run Code Online (Sandbox Code Playgroud)
为什么test.__defaults__
包含None
?在这种情况下,如何获取参数的默认值?
您使用仅关键字参数创建了一个函数; 你不能y
用作位置参数.关键字参数默认值存储在__kwdefaults__
:
>>> test.__kwdefaults__
{'y': 1}
Run Code Online (Sandbox Code Playgroud)
引用标准类型层次结构数据模型文档的可调用类型部分:
__kwdefaults__
:包含仅关键字参数的默认值的dict.
你应该真的使用inspect
模块Signature
对象来内省callables; 它会通过为您提供丰富的对象来处理这些细节:
>>> sig = inspect.signature(test)
>>> {name: param.default for name, param in sig.parameters.items()
... if not param.default is param.empty}
{'y': 1}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
121 次 |
最近记录: |