繁体   English   中英

如何检查是否使用inspect设置了python函数参数的默认值?

[英]How to check if default value for python function argument is set using inspect?

我正在尝试确定未设置默认值的函数的参数。 我正在使用inspect.signature(func).parameters.value()函数,它给出了一个函数参数列表。 由于我使用的是 PyCharm,我可以看到未设置默认值的Parameter.default属性设置为inspect._empty 我通过以下方式声明函数:

def f(a, b=1):
    pass

因此,默认值ainspect._empty 由于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)

输出:

a

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM