gpt4 book ai didi

python - 解释Python 3.4下的inspect.getargspec(map)?

转载 作者:太空宇宙 更新时间:2023-11-03 18:24:29 25 4
gpt4 key购买 nike

我对 Python3.4 中 inspect.getargspec 下 Python 内置映射的行为感到困惑。

In [1]: import inspect

In [2]: inspect.getargspec(map)
Out[2]: ArgSpec(args=[], varargs=None, keywords=None, defaults=None)

In [3]: import sys

In [4]: sys.version_info
Out[4]: sys.version_info(major=3, minor=4, micro=0, releaselevel='final', serial=0)

它说没有任何争论。它过去只是犯错,现在更好。

特别是我想了解一个函数需要多少个参数。我的旧技术是如果可变参数则返回 argspec.args 的长度,并且默认值很简单。不过,这种技术在这里返回了错误的结果。

最佳答案

getargspec() 调用 getfullargspec(),其文档字符串在 Python 3.4 中已更改,以指定接受“可调用对象”——它是过去的。 map 不是一个函数,但它是一个可调用的(返回 map 对象),因此没有错误。

此更新可能与 Argument Clinic in Python 3.4 的引入有关即,现在可以内省(introspection)一些内置的可调用对象,例如:

>>> import binascii
>>> import inspect
>>> inspect.getargspec(binascii.a2b_uu)
ArgSpec(args=['data'], varargs=None, keywords=None, defaults=None)

它在 Python 3.4 中有效,但在 Python 3.3 中失败

map 对象未使用参数诊所进行记录。它使用 custom code to parse input args 。正确的行为是引发 ValueError("unsupported callable") (而不是 TypeError)。

关于python - 解释Python 3.4下的inspect.getargspec(map)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23484011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com