
[英]In Python, is it bad form to set an argument's default value to be a function?
[英]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
因此,默认值a
是inspect._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.