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

相关文章

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

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

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

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

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

MySQL版本问题导致项目无法启动问题的解决方案

《MySQL版本问题导致项目无法启动问题的解决方案》本文记录了一次因MySQL版本不一致导致项目启动失败的经历,详细解析了连接错误的原因,并提供了两种解决方案:调整连接字符串禁用SSL或统一MySQL... 目录本地项目启动报错报错原因:解决方案第一个:第二种:容器启动mysql的坑两种修改时区的方法:本地

Linux使用scp进行远程目录文件复制的详细步骤和示例

《Linux使用scp进行远程目录文件复制的详细步骤和示例》在Linux系统中,scp(安全复制协议)是一个使用SSH(安全外壳协议)进行文件和目录安全传输的命令,它允许在远程主机之间复制文件和目录,... 目录1. 什么是scp?2. 语法3. 示例示例 1: 复制本地目录到远程主机示例 2: 复制远程主

RedisTemplate默认序列化方式显示中文乱码的解决

《RedisTemplate默认序列化方式显示中文乱码的解决》本文主要介绍了SpringDataRedis默认使用JdkSerializationRedisSerializer导致数据乱码,文中通过示... 目录1. 问题原因2. 解决方案3. 配置类示例4. 配置说明5. 使用示例6. 验证存储结果7.

springboot项目中使用JOSN解析库的方法

《springboot项目中使用JOSN解析库的方法》JSON,全程是JavaScriptObjectNotation,是一种轻量级的数据交换格式,本文给大家介绍springboot项目中使用JOSN... 目录一、jsON解析简介二、Spring Boot项目中使用JSON解析1、pom.XML文件引入依

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

eclipse如何运行springboot项目

《eclipse如何运行springboot项目》:本文主要介绍eclipse如何运行springboot项目问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目js录当在eclipse启动spring boot项目时出现问题解决办法1.通过cmd命令行2.在ecl