本文主要是介绍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支持的编译器
-
Clang / LLVM(支持C ++ 11的任何版本)
-
GCC 4.8或更新版本
-
Microsoft Visual Studio 2015或更高版本
-
Intel C++ compiler v17或更新版本(v16与pybind11 v2.0和v15与pybind11 v2.0)
2 更新日志
这里就不翻译这部分了,大家想看更新日志的话直接到英文文档里看就可以了
3 升级指南
升级指针跟更新日志配套使用,主要是一些api的弃用和替换,这里我也不做翻译了
这篇关于pybind11中文资料(目录+第一章 关于本项目 第二章、第三章)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!