我正在尝试识别未设置默认值的函数的参数。我在用着inspect.signature(func).parameters.value()
function 给出函数参数列表。由于我使用的是 PyCharm,因此我可以看到未设置默认值的参数有其Parameter.default
属性设置为inspect._empty
。我通过以下方式声明该函数:
def f(a, b=1):
pass
所以,默认值a
is inspect._empty
. Since inspect._empty
是一个私有属性,我认为可能有一种方法可以检查一个值是否是inspect._empty
,但我找不到它。
你可以这样做:
import inspect
def foo(a, b=1):
pass
for param in inspect.signature(foo).parameters.values():
if param.default is param.empty:
print(param.name)
Output:
a
param.empty
持有同一个物体inspect._empty
。我认为推荐这种使用方式是因为中的示例检查模块的官方文档 https://docs.python.org/3/library/inspect.html#inspect.Parameter:
Example: print all keyword-only arguments without default values:
>>>
>>> def foo(a, b, *, c, d=10):
... pass
>>> sig = signature(foo)
>>> for param in sig.parameters.values():
... if (param.kind == param.KEYWORD_ONLY and
... param.default is param.empty):
... print('Parameter:', param)
Parameter: c
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)