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

标签 python

以下代码返回 false

import inspect
print(inspect.isbuiltin(map))
但是 map 功能在"built-in" functions下列出.
为什么会这样?

最佳答案

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 builtins module 的成员,在每个模块中都可用。

  • 虽然大多数 builtins 是为了速度而编译的,但这不是必需的。
    如果要检查名称是否是 builtins 的一部分,请通过模块进行:
    >>> import builtins
    >>> hasattr(builtins, "map")
    True
    >>> hasattr(builtins, "sum")
    True
    >>> hasattr(builtins, "reduce")
    False
    

    关于python - 为什么 inspect() 认为 map 不是内置的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68253286/

    相关文章:

    python - 如何使用 python 连接到 Cosmos DB Emulator 表存储?

    python - 是否可以将 PyPy 嵌入到 .NET 应用程序中?

    python - 如何比较 pandas 数据框中第二列的值与第一列的相同值?

    Windows 上的 Python Matplotlib : Issue on updating matplotlib to 3. 1.2

    python - 导入错误 : cannot import name celery

    python - 无法打印 df.shape,我从 pandas 中以数据帧格式读取它

    python - ftplib - 504 安全机制 'TLS' 未实现

    python - 删除后无法将列重新添加到 Pandas 多索引数据框

    python - PyCharm numpy - 对数组进行排序不起作用?

    python - 为什么Python中使用多线程没有输出?