如何从 python 文档中找到由 import 语句导入的所有内容?

How to find everything imported by an import statement from python documentation?

我正在尝试 python 中的一些代码并注意到这个特殊情况。

import importlib
print(importlib.abc)

以上代码在 python 3.7 中运行良好,但在 python 3.10.2 中运行不正常。在 python 3.10.2 中,出现以下错误:

AttributeError: module 'importlib' has no attribute 'abc'. Did you mean: '_abc'?

我试图查看文档以了解上述代码的行为是否以某种方式发生了变化。但是没找到。我尝试查找的文档是 Python 3.7 importlib documentation and Python 3.10.2 importlib documentation.

所以我想知道如何通过文档在 python 标准库中找到由 import 语句导入的东西。

注意:我知道我可以查看 dir(importlib) 以查看 importlib 导入后的所有内容。但我想通过文档找到它,这样我就可以在不使用特定 python 版本的情况下了解它们。

如果你想导入一个包的子模块,你应该明确地这样做:

import importlib.abc

Python 导入包时不会自动加载包的所有子模块。在没有显式子模块导入的情况下子模块是否可用取决于程序中其他地方的某些代码是否已经加载了该模块。

至于标题中的问题,文档通常不会包含您要求的信息。好的文档将彻底描述模块的整个 public API,但您要的是除此之外的信息。

您可以使用 python dir() 函数来了解 importlib 包含什么

import importlib
dir(importlib)

或者稍微不同的方法是 hasattr(importlib,'abc'),其中 returns 一个布尔值。

还有一种方法是通过 inspect 模块

import importlib
import inspect
inspect.getmembers(importlib) #Show all methods,attribute and ...

inspect.getmembers(importlib, inspect.ismodule) #Show only modules