python嵌入到C++的一些理解

1.简介(比较各自的特点,提出问题)

C++ 与 python都是用的比较广泛的语言,各有各的优点;C++性能优异,python简单方便库丰富,如果能够结合两者使用就很好。

python作为一种脚本语言,解释器会将其翻译成可执行代码。python强大呀,提供了C接口供C/C++调用,意思就是C/C++就能嵌入python代码,实际中就能够发挥两种语言的优点了。

2.如何实现

在实现上,Python提供了C接口供C/C++使用,以C语言lib库的形式提供include和lib;可以在python的安装目录下找到python.h和python27.lib。

python提供了三种形式的“嵌入”------Code strings,Callable objects,Code files

Code strings,直接以字符串的形式传给解释器执行,另外也可以获得一些返回值。

Callable objects,先load一个python文件,然后调用该文件中的函数或者变量等。

Code files,直接载入一个python文件的形式。

本质上,这些功能的提供都通过Python提供的这一套C接口实现的,可暂时不深究,待以后需要用到的时候再学习。

3.还有哪些库

PythonQT:试了下2.8和3.0(QT4.8),均未试验成功。

boost.python:未尝试。

相关:

初识Python与Qt:http://mobile.51cto.com/symbian-268735.htm

Programming Python, 3rd Edition:http://wiki.woodpecker.org.cn/moin/PP3eD/Ch-23-2

将Python嵌入到Qt程序中:http://blog.csdn.net/jingwenlai_scut/article/details/5642348

C++和Python混合编程 - C++写python扩展:http://tanklee.github.io/2013/11/25/python-cpp-programming-1/

时间: 2024-10-16 21:36:21

python嵌入到C++的一些理解的相关文章

boost.python入门教程 ----python 嵌入c++

boost.python 中 python 嵌入c++ 部分,网上找到的中文资料似乎都有些过时了, 如 boost.python学习笔记 http://edyfox.codecarver.org/html/boost_python.html 在boost.python版本2中,提供更加简洁易用的接口,我们可以使用从而 代替原始的PyRun_SimpleString等等python c 转换api. 关于python与C++混合编程,事实上有两个部分 extending   所谓python 程序

Python 线性回归(Linear Regression) 基本理解

背景 学习 Linear Regression in Python – Real Python,对线性回归理论上的理解做个回顾,文章是前天读完,今天凭着记忆和理解写一遍,再回温更正. 线性回归(Linear Regression) 刚好今天听大妈讲机器学习,各种复杂高大上的算法,其背后都是在求"拟合". 线性回归估计是最简单的拟合了.也是基础中的基础. 依然是从字面上先来试着拆解和组合: 首先,Regression 回归,指的是研究变量之间的关系,这个由来在Python 线性回归(Li

python 中 深拷贝和浅拷贝的理解

在总结 python 对象和引用的时候,想到其实 对于python的深拷贝和浅拷贝也可以很好对其的进行理解. 在python中,对象的赋值的其实就是对象的引用.也就是说,当创建一个对象,然后赋给另外一个变量之后,实际上只是拷贝了这个对象的引用. 我们先用  利用切片操作和工厂方法list方法 来阐述一下浅拷贝. 举个栗子: Tom = ['Tom', ['age', 10]] Jack = Tom[:] ……切片操作 June = list(Tom) 接下来查看一下 上述三个变量的引用: >>

《Python 源码剖析》一些理解以及勘误笔记(2)

以下是本人阅读此书时理解的一些笔记,包含一些影响文义的笔误修正,当然不一定正确,贴出来一起讨论. 注:此书剖析的源码是2.5版本,在python.org 可以找到源码.纸质书阅读,pdf 贴图. 文章篇幅太长,故切分成3部分,这是第二部分. p248: 嵌套函数.闭包和 decorator co_cellvars: 通常是一个tuple,保存嵌套的作用域内使用的变量名集合: co_freevars: 通常是一个tuple,保存使用了的外层作用域中的变量名集合. 如下的一段Python 代码: P

[有码有真相]python类私有属性等要点理解及测试示例代码

# encoding: utf-8 ''' 1. python约定类定义中"__"开头(至多一个"_"结尾)的属性为"相对"的私有属性 2. 私有属性在类及其子类定义中是"可见"的,在 其它范围正常访问是相对"不可见"的 3. 留下子类可以修改父类私有属性的口子方便debug测试等 4. 在类定义以外可以通过['_'+className+'私有属性名称']名称访问 5. 私有属性引入是避免类,实例等混淆和冲

python中的深拷贝和浅拷贝理解

在python中,对象赋值实际上是对象的引用.当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用.以下分两个思路来分别理解浅拷贝和深拷贝: 利用切片操作和工厂方法list方法拷贝 利用copy中的deepcopy方法进行拷贝 1.利用切片操作和工厂方法list方法拷贝 代码场景:有一个小伙jack,tom通过切片操作拷贝jack,anny通过工厂方法拷贝jack. >>> jack = ['jack', ['age', 20]] &g

linux下python守护进程编写和原理理解

原文地址: http://www.01happy.com/linux-python-daemon/ 守护进程英文为daemon,像httpd.mysqld.vsftpd最后个字母d其实就是表示daemon的意思. 守护进程的编写步骤: fork子进程,而后父进程退出,此时子进程会被init进程接管. 修改子进程的工作目录.创建新进程组和新会话.修改umask. 子进程再次fork一个进程,这个进程可以称为孙子进程,而后子进程退出. 重定向孙子进程的标准输入流.标准输出流.标准错误流到/dev/n

Python中的try...finally...的理解

最近在跟着mooc学习Python,作为新手会遇到很多不懂的问题,例如在文件读写时所涉及到的文件打开正常与否的关闭问题就用到了try...finally...,经过查找资料,也算是理解了,接下来由小编谈谈自己的看法: =============================== === try...finally...使用格式: try: f = open('name.txt','r') while True: 程序... finally: f.close() ================

《Python 源码剖析》一些理解以及勘误笔记(3)

以下是本人阅读此书时理解的一些笔记,包含一些影响文义的笔误修正,当然不一定正确,贴出来一起讨论. 注:此书剖析的源码是2.5版本,在python.org 可以找到源码.纸质书阅读,pdf 贴图. 文章篇幅太长,故切分成3部分,这是第三部分. p316: 初始化线程环境 Python 虚拟机运行期间某个时刻整个的运行环境如下图: 建立联系之后的PyThreadState 对象和 PyInterpreterState  对象的关系如下图: _PyThreadState_Current 是个全局变量,