1

我想检索应用程序提供给用户的所有 API 的列表。

该应用程序大部分是用 C/C++ 编写的。

我希望python有一个标准功能,我也试图在命名空间方面解决这个问题,因为我对所有关键字不感兴趣,而只对API提供的关键字感兴趣,但我根本不知道在功能方面从哪里开始,我不知道正在做与我想要实现的目标相关的功能。

该应用程序使用 Python 3.x 来提供 API。

4

1 回答 1

2

Python 没有将 API(或接口)作为语言原语的概念。一个模块或包会暴露它的一些成员(函数和变量)并隐藏其他的,所以如果你知道你感兴趣模块,“暴露”在这个意义上是 AFAIK 最有意义的概念。

暴露的成员与运行时将导入的成员相同from <module> import *。您可能知道,以单个下划线开头或以两个下划线开头以两个结尾的成员名称并不意味着是 API 的一部分,也不会被导出;默认情况下,其他所有内容都将被公开,但模块可以通过列出应该在__all__变量中导出的内容来自定义其 API——请参阅Importing * from a package

因此,要找到您正在寻找的 API,您必须首先知道您感兴趣的顶级模块。如果有问题的应用程序可以作为单个包提供给 python,请从它开始。如果它有一个__all__变量,它的内容就是包的 API。如果不是,请查看内容dir(<package>)并排除仅以下划线开头的任何内容,或者以两个下划线开头但不以两个结尾的内容。如果您正在查看一个大包,您会发现其中一些本身就是模块或包。以相同的方式递归地检查它们。

于 2012-09-04T16:56:38.957 回答