我正在尝试使用函数对象的 __defaults__
属性来获取参数的默认值。它适用于这种情况:
>>> def test(x, y=1): pass
...
>>> test.__defaults__
(1,)
但它不会:
>>> def test(*args, y=1): pass
...
>>> test.__defaults__
>>>
为什么 test.__defaults__
包含 None
?在这种情况下,如何获取参数的默认值?
最佳答案
您创建了一个带有仅关键字参数的函数;您不能将 y
用作位置参数。关键字参数默认值存储在 __kwdefaults__
中:
>>> test.__kwdefaults__
{'y': 1}
引用 Standard Types hierarchy datamodel documentation 的可调用类型部分:
__kwdefaults__
: A dict containing defaults for keyword-only parameters.
你真的应该使用 inspect
module Signature
object但是要反省可调用对象;它会通过为您提供丰富的对象来处理这些细节:
>>> sig = inspect.signature(test)
>>> {name: param.default for name, param in sig.parameters.items()
... if not param.default is param.empty}
{'y': 1}
关于python - 如何在 Python 中访问关键字参数的默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26400449/