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

相关文章

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数据进制问题的解决中文乱码问题解决总结

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

怎么用idea创建一个SpringBoot项目

《怎么用idea创建一个SpringBoot项目》本文介绍了在IDEA中创建SpringBoot项目的步骤,包括环境准备(JDK1.8+、Maven3.2.5+)、使用SpringInitializr... 目录如何在idea中创建一个SpringBoot项目环境准备1.1打开IDEA,点击New新建一个项

如何使用Maven创建web目录结构

《如何使用Maven创建web目录结构》:本文主要介绍如何使用Maven创建web目录结构的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录创建web工程第一步第二步第三步第四步第五步第六步第七步总结创建web工程第一步js通过Maven骨架创pytho

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热