python - 如何在 Python 中访问关键字参数的默认值?

标签 python function arguments

我正在尝试使用函数对象的 __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/

相关文章:

python - 如何使用循环找到给定值的一对搜索值?

JavaScript 嵌套范围

php - PHP中数组的串行逗号

excel - 如何更改excel四舍五入的小数(默认为0.50,无论小数点前的数字如何,我都需要它向上或向下舍入0.20)

无法识别 C++ 多个函数

ios - 我可以在 swift 中有两种类型的参数吗?

python - 使用 wxpython 绑定(bind)事件

python - 在 tkinter 中切换帧而不使用 lambda 表达式

python - 图例中的 Pandas groupby 对象

c - 函数参数分配?