我发现a number和questions中的answers用于确定python中函数*所需的参数/参数。 Python有许多可调用的对象(使用callable
),它们将返回一个值,为此inspect.getfullargspec返回一个错误(inspect.Signature在我的非正式测试中似乎不太可靠?)。
例如:
inspect.getfullargspec(max)
返回错误:
TypeError: unsupported callable
是否有其他检查方法可以用于其他“不受支持的可调用” [函数/对象?]
查看许多内置的可调用对象,似乎很多都属于“不受支持”类别,我只能猜测其他模块/库中的对象。
*我可能会在这里打扰我,抱歉-任何确定具体是哪个的方法?
答案 0 :(得分:0)
在CPython中,内置函数是用C实现的,因此有许多怪癖。这就是其中之一。以PEP 570的一些示例为例:
在Python的当前版本中,许多CPython“内置”和标准 库函数仅接受仅位置参数。的 通过调用以下方法之一,可以很容易地观察得到的语义 使用关键字参数的功能:
>>> help(pow)
...
pow(x, y, z=None, /)
...
>>> pow(x=5, y=3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: pow() takes no keyword arguments
pow()
通过/标记表示其参数仅为位置。 但是,这仅是一个文档惯例。 Python开发人员 不能在代码中使用此语法。有些函数具有其他有趣的语义:
range()
是重载函数,它接受一个可选参数 其必需参数的左侧。dict()
,其映射/迭代器 参数是可选的,并且在语义上必须是仅位置的。任何 此参数在外部可见的名称将将该名称遮盖 进入** kwarg关键字可变参数参数字典。
当前(虽然未实现PEP)Python没有正式的方式来表达这些不寻常的语义,例如仅位置参数。