为什么inspect()认为map不是内置的?

2024-05-15 20:27:10 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的代码返回false

import inspect
print(inspect.isbuiltin(map))

但是map函数列在"built-in" functions

为什么会这样


Tags: 函数代码inimportfalsemapfunctionsprint
1条回答
网友
1楼 · 发布于 2024-05-15 20:27:10

inspect.isbuiltin只会

Return true if the object is a built-in function or method.

内置的map是一个,而不是一个函数或方法:

>>> map
<class 'map'>

事实上,大多数返回迭代器的“内置函数”都是作为类实现的;调用它们将返回经过优化的实例,而不是重复使用某些泛型迭代器类

>>> zip  # zip iterator "function" is also a class
<class 'zip'>
>>> map(str, (1, 2, 34))  # map builds instances of map
<map object at 0x103fa34f0>

此外,请记住术语“内置”在Python中有两种含义:

  • 编译对象,即内置于解释器的
  • the ^{} module的成员,可在每个模块中使用

虽然大多数builtins都是为了速度而编译的,但这并不是必需的

如果要检查名称是否是builtins的一部分,请通过模块执行此操作:

>>> import builtins
>>> hasattr(builtins, "map")
True
>>> hasattr(builtins, "sum")
True
>>> hasattr(builtins, "reduce")
False

相关问题 更多 >