pybind11中文资料(目录+第一章 关于本项目 第二章、第三章)

本文主要是介绍pybind11中文资料(目录+第一章 关于本项目 第二章、第三章),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

之前给了自己立下了目标,要把pybind11资料整理一下,我就把英文的资料翻译一下,当然了,限于本人英语水平,肯定是需要百度翻译和谷歌翻译等翻译工具的帮助的,我尽量将我理解的意思翻译下来,如果有一些翻译不当的地方也欢迎大家斧正。

今天我们就先翻译目录和第一章,通过目录我们可以看到pybind11资料整体内容,第一章虽对我们的实践影响不大,但可以通过第一章可以了解pybind11为我们提供了哪些特性,让我们对pybind11有一个整体的印象

在此我要特别感谢pybind11项目创立者 Wenzel Jakob以及众多项目参与者

1 关于本项目

2 更新日志

3 升级指南

4 第一步

5 面向对象的代码

6 构建系统

7 功能

8 类

9 例外

10 智能指针

11 类型转换

12 Python C++ 接口

13 嵌入解释器

14 杂项

15 经常询问的问题

16 检测

17 限制

18 参考

 

1关于本项目

pybind11是一个只有头文件的轻量级库,它向Python暴露了C++的类型同时也向C++暴露了Python类型,pybind11主要用于创建现有C++代码的Python绑定。它的目标和语法类似于David Abrahams的Boost.Python库:通过编译自省的推断类型信息来最小化传统扩展模块中的样板代码。

Boost.Python的主要问题是Boost,这也是创建这样一个类似项目的原因。Boost是一个非常庞大且复杂的实用程序库套件,并且Boost几乎适用于所有C ++编译器。这种兼容性是有成本的:为了支持最古老和bug最多的编译器版本,晦涩难懂的模板技巧以及各种变通方法是必需的。现在,C++11兼容的编译器已经广泛使用,这种沉重结构已成为一种过大且不必要的依赖。可以把pybind11库想象成Boost.Python的一个小型自包含版本,其中所有与python绑定生成无关的内容都被删除了。pybind11没有注释,而且核心头文件只需要大约4K行的代码,并且只依赖于Python(2.7或3.x,或PyPy2.7> = 5.7)和C ++标准库。由于一些新的C++11语言特性(特别是:元组,lambda函数和可变参数模板),这种紧凑的实现成为可能。自创建以来,这个库已经在很多方面超越了Boost.Python,许多常见情况下pybind11使得python绑定代码变得非常简单。

1.1 核心功能

以下核心C ++功能可以映射到Python

  • 函数入参和返回值可以是自定义数据结构的值、引用或者指针

  • 实例方法和静态方法

  • 重载功能

  • 实例属性和静态属性

  • 任意异常类型

  • 枚举

  • 回调

  • 迭代器和范围

  • 自定义操作符

  • 单继承和多继承

  • STL数据结构

  • 带有引用计数的智能指针,类似于std::shared_ptr

  • 正确的引用计数的内部引用

  • 带有虚函数和纯虚函数的C ++类可以在Python中扩展

1.2 好东西

除了核心功能外,pybind11还提供了一些额外的好东西:

  • Python 2.7,3.x和PyPy(PyPy2.7> = 5.7)支持与实现无关的接口。

  • 可以将C++11 lambda函数与捕获的变量绑定在一起。lambda捕获的数据存储在生成的Python函数对象中。

  • pybind11使用C++11move constructors 和 move assignment operators从而有效地转换自定义数据类型。

  • 通过Python的缓冲协议,可以很容易地公开内部存储的自定义数据类型。C++矩阵类型如Eigen和NumPy之间进行快速转换是轻而易举的。

  • pybind11可以自动将函数矢量化,以便它们透明地应用于以NumPy数组为参数的所有条目。

  • 只需几行代码就可以支持Python的基于切片的访问和赋值操作。

  • 一切都只包含在几个头文件中,没有必要链接任何其他库。

  • 二级制文件更小,编译时间更少。

  • 只需很少的额外工作,C ++类型就可以像Python对象一样进行pickled和unpickled。

1.3支持的编译器

  1. Clang / LLVM(支持C ++ 11的任何版本)

  2. GCC 4.8或更新版本

  3. Microsoft Visual Studio 2015或更高版本

  4. Intel C++ compiler v17或更新版本(v16与pybind11 v2.0和v15与pybind11 v2.0)

2 更新日志

这里就不翻译这部分了,大家想看更新日志的话直接到英文文档里看就可以了

3 升级指南

升级指针跟更新日志配套使用,主要是一些api的弃用和替换,这里我也不做翻译了

这篇关于pybind11中文资料(目录+第一章 关于本项目 第二章、第三章)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1033345

相关文章

精选20个好玩又实用的的Python实战项目(有图文代码)

《精选20个好玩又实用的的Python实战项目(有图文代码)》文章介绍了20个实用Python项目,涵盖游戏开发、工具应用、图像处理、机器学习等,使用Tkinter、PIL、OpenCV、Kivy等库... 目录① 猜字游戏② 闹钟③ 骰子模拟器④ 二维码⑤ 语言检测⑥ 加密和解密⑦ URL缩短⑧ 音乐播放

Springboot项目启动失败提示找不到dao类的解决

《Springboot项目启动失败提示找不到dao类的解决》SpringBoot启动失败,因ProductServiceImpl未正确注入ProductDao,原因:Dao未注册为Bean,解决:在启... 目录错误描述原因解决方法总结***************************APPLICA编

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

SQL Server安装时候没有中文选项的解决方法

《SQLServer安装时候没有中文选项的解决方法》用户安装SQLServer时界面全英文,无中文选项,通过修改安装设置中的国家或地区为中文中国,重启安装程序后界面恢复中文,解决了问题,对SQLSe... 你是不是在安装SQL Server时候发现安装界面和别人不同,并且无论如何都没有中文选项?这个问题也

在IntelliJ IDEA中高效运行与调试Spring Boot项目的实战步骤

《在IntelliJIDEA中高效运行与调试SpringBoot项目的实战步骤》本章详解SpringBoot项目导入IntelliJIDEA的流程,教授运行与调试技巧,包括断点设置与变量查看,奠定... 目录引言:为良驹配上好鞍一、为何选择IntelliJ IDEA?二、实战:导入并运行你的第一个项目步骤1

Python实现中文文本处理与分析程序的示例详解

《Python实现中文文本处理与分析程序的示例详解》在当今信息爆炸的时代,文本数据的处理与分析成为了数据科学领域的重要课题,本文将使用Python开发一款基于Python的中文文本处理与分析程序,希望... 目录一、程序概述二、主要功能解析2.1 文件操作2.2 基础分析2.3 高级分析2.4 可视化2.5

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

Linux下删除乱码文件和目录的实现方式

《Linux下删除乱码文件和目录的实现方式》:本文主要介绍Linux下删除乱码文件和目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下删除乱码文件和目录方法1方法2总结Linux下删除乱码文件和目录方法1使用ls -i命令找到文件或目录

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

Redis出现中文乱码的问题及解决

《Redis出现中文乱码的问题及解决》:本文主要介绍Redis出现中文乱码的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 问题的产生2China编程. 问题的解决redihttp://www.chinasem.cns数据进制问题的解决中文乱码问题解决总结