当前位置: 首页 > 面试题库 >

python绑定,它如何工作?

郝修为
2023-03-14
问题内容

我正在探索python。我对python绑定感到好奇。任何人都可以解释一下,如何有可能从Python访问C库。


问题答案:

有几种方法可以从Python调用用C编写的代码。

首先,标准库中有ctypes模块。它允许您加载动态链接库(Windows.so上为DLL,Linux上为共享库)并直接从Python调用这些库中的函数。此类库通常用C编写。

其次,对于CPython,有Python / C
API。它可以以两种主要方式使用:

动态链接库可以用C编写,这样CPython会将其视为模块(您可以将其导入Python程序中)。Python / C
API允许库定义用C编写但仍可从Python调用的函数。该API非常强大,并提供了用于操纵所有Python数据类型和访问解释器内部的函数。

使用C
API的第二种方法是将Python嵌入用C编写的程序中。然后C程序可以创建用C编写的内置模块并公开C函数,就像在动态链接库方法中一样。该API还允许程序执行脚本,然后可以导入和使用内置模块。这可用于创建基于Python的插件系统。

“绑定”既可以使用ctypes实现为纯Python库,也可以使用Python / C
API实现为动态链接库。第二个选项有时与诸如SWIG之类的工具一起使用,它可以通过生成“样板代码”来简化任务,而Boost.Python可以在Python
/ C API之上提供C API,从而更轻松地与C 进行接口码。

进一步阅读:外部功能接口



 类似资料:
  • 目标 如何 OpenCV-Python 绑定是如何生成的? 如何扩展新的 OpenCV 模块到 Python? OpenCV-Python 绑定是如何生成的? 在 OpenCV 中,所有的算法都是用 C++ 实现的。但是这些算法可以在 Python,Java 等不同的语言中使用,这是通过绑定生成器实现的。这些生成器在 C++ 和 Python 之间建立了桥梁,使用户可以从Python调用 C++

  • 问题内容: 数据绑定在框架中如何工作? 我尚未在其网站上找到技术细节。数据从视图传播到模型时,或多或少地清楚了它是如何工作的。但是,AngularJS如何在没有设置者和获取者的情况下跟踪模型属性的变化? 我发现有些JavaScript观察程序可以完成这项工作。但是Internet Explorer 6和Internet Explorer 7不支持它们。那么AngularJS如何知道我更改了以下内容

  • 问题内容: 起作用但是 没有。 我无法在python中绑定+ 。是否有所有可能按键的文档? 问题答案: 用途: 我没有指向这些事件名称的完整列表的链接。这是我收集的部分清单:

  • 我在build.gradle文件中添加了以下依赖项 编译“javax . JSON . bind:javax . JSON . bind-API:1 . 0 . 0-M2”时,它会抛出如下错误 错误:任务执行失败:app:transformClassesWithDesugarForDebug。 这是我build.gradle档案

  • 问题内容: 使AngularJS与其他JavaScript-MVC框架区分开的一件事是,它能够使用绑定将JavaScript中的绑定值回传到HTML。当您为$ scope变量分配任何值时,Angular会“自动”执行此操作。 但是,这有多自动化?有时,Angular不会接受更改,因此我需要调用$ scope。$ apply()或$ scope。$ digest()来通知angular来获取更改。有

  • 问题内容: 在Python中,有没有办法绑定未绑定的方法而不调用它? 我正在编写一个程序,对于某个类,我决定将所有按钮的数据分组为类级别的元组列表是一件好事,如下所示: 问题是,因为所有的值r都是未绑定方法,所以我的程序爆炸得很厉害,我哭了。 我正在网上寻找解决方案,该方案应该是一个相对直接,可解决的问题。不幸的是我找不到任何东西。现在,我正在解决此问题,但是没有人知道是否存在一种干净,健康,Py