Boost.Python简介

Boost.Python简单概括:是Boost库的一部分;用来在C++代码中调用python代码以及在Python代码中调用C++代码,并且避免用户直接操作指针。

以下内容搬运自:https://wiki.python.org/moin/boost.python/GettingStarted

简介

BoostPython库让C++和Python几乎无缝结合,是Boost库的一个功能。

用BoostPython库,能快速、容易地将C++输出到Python,使得Python接口和C++接口非常像。它被设计成尽可能贴近你的C++设计。大多数情况下,你不需要修改C++类就能在Boost.Python中使用它。系统会简单地映射你的C++类和函数到Python。Boost.Python的这种绑定,是纯C++实现的,除了编辑器和编译器你什么别的都不需要。

Python C++-sig(http://www.python.org/sigs/current/cplusplus-sig/)维护了本库用户邮件列表。当前版本文档在`http://www.boost.org/libs/python/。开发文档在http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/*checkout*/boost/boost/libs/python/doc/index.html`可以查到,往往是最新的

Boost.Python和Python C API的关系

Python已经提供了API,用于粘合Python和C。那Boost::Python又是什么?Boost::Python是Python/C API的一个封装(wrapper)。

使用Python/C API,你需要在Python和C代码之间传递指针的前后,手动处理指针问题,比如指针不再指向原来的对象时,Boost::Python接管了这项任务,自动处理。此外,Boost::Python使我们能用C++的OOP方式,在Python对象上写操作。

比如,对于Python代码y=object_x[i],同样的功能用Python/C API实现,需要这样写:

y=PySequence_GetItem(object_x, i);

作为对比,用Boost::Python这样写就行了:

y=object_x[i];

此外,Boost::Python使得将我们的C++类输出为Python变得容易,甚至都不需要改变。Boost::Python的设计理念是:用户永远不需要接触PyObject*

如果你需要潜在Python/C API
用了Boost:Python后仍然可以用Python/C API写东西。甚至都不必引入python.h头文件,就可以用相关的函数了。比如在C++中清除掉一个Python错误,可以在一个Boost::Python程序中插入这行:

PyErr_Clear();

在C++中,Python/C API用PyObject指针来表示Python对象。而在Boost::Python中,这些用boost::python::object类的实例来封装(替代了直接用指针的表示)。

你如果需要某个boost::python::object的PyObject,可以通过boost::python::object的ptr()方法来获取到,它返回的是一个PyObject*。然后你可以使用Python/C API调用。比如,我有个boost::python:object的实例叫boostObj,我想知道它是否有一个叫做myAttributeName的属性,那就:

PyObject_HasAttrString(boostObj.ptr(), "myAttributeName");
时间: 2024-09-23 13:15:00

Boost.Python简介的相关文章

cdt-Linux CDT boost.python生成可调用模块问题

问题描述 Linux CDT boost.python生成可调用模块问题 主题:尝试利用boost.python封装C++程序,供P调用 环境: 1.系统Ubuntu 14.04LTS 2.python版本2.7.6 3.Eclipse版本Kepler 4.GCC 4.8.2 5.libboost 1.54 问题描述: 使用CDT,按照http://www.boost.org/doc/libs/1_57_0/libs/python/doc/tutorial/doc/html/index.html

Python学习【第一天】Python简介

Python简介 Python前世今生 Python是著名的"龟叔"Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. 现在,全世界差不多有600多种编程语言,但流行的编程语言也就那么20来种.如果你听说过TIOBE排行榜,你就能知道编程语言的大致流行程度.这是最近10年最常用的10种编程语言的变化图,最新的TIBOE排行榜,Python已经坐稳了第五的宝座,甩php好几条街. 由上图可见,Python整体呈上升趋势,反映出Python应

《Python程序设计》——1.4 Python简介

1.4 Python简介 本书使用IDLE作为Python的编辑器.你仅需做少许调整,就可使用其他的编辑器来完成本书的任务.我们假设你的电脑上已经安装带有IDLE的Python 3(或是选择其他的编辑器).若您需要获取关于Python和IDLE的安装帮助,请参考附录C.1.4.1 启动IDLE Windows:根据你使用的Windows版本,你可以在"开始"→"所有程序"→ "Python 34"→"IDLE"中找到并运行ID

boost python c++接口-boost python 封装c++接口 回调函数设置类对象

问题描述 boost python 封装c++接口 回调函数设置类对象 在python调用的时候报错,应该是self不是c++的类型导致无法使用 解决方案 最好是再封装一层C的接口给Python调用

Python之路【1】:Python简介和入门

Python之路[第一篇]:Python简介和入门 python简介: 一.什么是python Python(英国发音:/ pa θ n/ 美国发音:/ pa θɑ n/),是一种面向对象.直译式的计算机程序语言. 每一门语言都有自己的哲学: pythonde 设计哲学是:"优雅"."明确"."简单" 二.python由来  1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承.之

关于在编译boost.python当中遇到的一些问题

因为我需要做一个python脚本系统, 所以今天在家编译boost.python库,可是死活都编译不过去, bjam的警告中有一条大概的意思是,没有找到python的安装信息, 就算是我用了set命令设置临时的环境变量,结果还是一样的,查找资料也没有什么结果, 真是气煞我也! 后来,我就在bjam的参数中去设置python的路径,我的python是在C:\Program Files\ython25里面,我命令输错了,bjam输出了一条错误消息,我发现路径名被截断为C:\Program了!! 难道

《Python程序设计》——第1章 计算与问题求解简介 1.1 计算与Python简介

第1章 计算与问题求解简介 1.1 计算与Python简介 本书介绍如何使用计算机进行问题求解.虽然编程语言用Python,但是原理适用于大部分现代编程语言.许多示例和习题展示了在真实世界中是如何使用计算机的.下面是你可能提出的计算机和编程方面一些的问题. 问:我们如何与计算机沟通? 答:使用编程语言与计算机沟通.最低级别的是机器语言(machine language),其能被微处理器直接理解,但是很难为人所理解.Python是高级语言(high-level language).它由人能理解的指

《Python硬件编程实战》——第1章 Python简介 1.1 Python是什么

第1章 Python简介 1.1 Python是什么 Python作为一个英文单词,其本意是巨蟒.蟒蛇的意思. Python这个词在计算机语言领域内指的是一种计算机语言叫作Python. Python语言名字的由来 我们之所以把蟒蛇--Python用于命名计算机语言是有其历史典故的. 1989年在阿姆斯特丹,Python语言的创始人吉多·范罗苏姆(Guido van Rossum)为了打发圣诞节的无趣决心开发一个新的脚本解释程序,在给此新的计算机语言起名字时,由于其本人是巨蟒剧团的忠实粉丝,所以

《Python参考手册(第4版•修订版)》——第一部分 Python语言 第1章 Python简介 1.1 运行Python

第一部分 Python语言 本部分内容 第1章 Python简介 第2章 词汇和语法约定 第3章 类型与对象 第4章 运算符与表达式 第5章 程序结构与控制流 第6章 函数与函数编程 第7章 类与面向对象编程 第8章 模块.包与分发 第9章 输入与输出 第10章 执行环境 第11章 测试.调试.探查与调优 第1章 Python简介 本章将快速介绍Python这门语言,目标是在阐明Python的大部分基本特性的同时,又不会太过纠缠于特殊的规则或细节.为此,本章简要讲述一些基本概念,如变量.表达式.