Pus*_*kar 7 python signature inspect
我正在尝试识别未设置默认值的函数的参数。我正在使用inspect.signature(func).parameters.value()提供函数参数列表的函数。由于我使用的是 PyCharm,因此我可以看到未设置默认值的参数的属性设置Parameter.default为inspect._empty. 我通过以下方式声明该函数:
def f(a, b=1):
pass
Run Code Online (Sandbox Code Playgroud)
因此, 的默认a值为inspect._empty。由于inspect._empty是 一个私有属性,我认为可能有一种方法可以检查值是否为inspect._empty,但我找不到它。
san*_*ash 11
你可以这样做:
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)
Run Code Online (Sandbox Code Playgroud)
输出:
a
Run Code Online (Sandbox Code Playgroud)
param.empty持有同一个物体inspect._empty。我认为推荐这种使用方式是因为检查模块官方文档中的示例:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3772 次 |
| 最近记录: |