c++ - 检索应用程序提供的所有 Python API 的列表

标签 c++ python c api python-3.x

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

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

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

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

最佳答案

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

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

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

关于c++ - 检索应用程序提供的所有 Python API 的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12267320/

相关文章:

c++ - 当我不知道类型时如何将参数传递给函数

c++ - 是否编译了带有 if(this==NULL) 测试的类函数?

javascript - Python Pandas 突出显示 Dataframe 中的行

python - 如何在 theano 中跨 3d 张量进行广播?

c - int 产生接近正确的答案,但 float 只给出 -18.000

c - C中通过socket接收和发送数据

c++ - 存储C++ lambda的方法:模板与非模板形式?

python - SQL 行不会删除。不抛出任何错误

c - 对 2D 阵列的一部分进行无限循环

python - 如何在 boost::python 扩展模块中正确组合 C++ 和 Python 代码?