Python学习笔记(二)

C++调用Python脚本 完整的C++调用Python脚本源码,包含参数传递和函数返回值处理等,且解决传递中文参数出现乱码等问题 立即下载
http://playpointxd.spaces.live.com/Blog/cns!F76C78ED20EEB74B!942.entry
Python学习笔记(二)

 嵌入python的最高层级函数

int Py_Main(int argc, char** argv)

类似于C中的main,不多说了

然后在C中执行python程序,分成以下几类函数

(1)int PyRun_SimpleStringFlags(const char *command, PyCompilerFlags *flags)执行python代码片断,代码为输入的字符串,成功返回0,失败-1

int PyRun_SimpleString(const char *command)为简化版

(2)int PyRun_SimpleFileExFlags(FILE *fp, const char *filename, int closeit, PyCompilerFlags *flags)执行python文件,如果参数closeit为true,在返回前关闭文件

int PyRun_SimpleFileEx(FILE *fp, const char *filename, int closeit)

int PyRun_SimpleFileFlags(FILE *fp, const char *filename, PyCompilerFlags *flags)

int PyRun_SimpleFile(FILE *fp, const char *filename)

为简化版本

(3)int PyRun_InteractiveOneFlags(FILE *fp, const char *filename, PyCompilerFlags *flags)读取并执行一句代码,文件关联到交互设备,如果输入代码执行成功返回0,失败返回-1

int PyRun_InteractiveOne(FILE *fp, const char *filename)简版

(4)int PyRun_InteractiveLoopFlags(FILE *fp, const char *filename, PyCompilerFlags *flags)循环直到EOF

int PyRun_InteractiveLoop(FILE *fp, const char *filename)简版

(5)int PyRun_AnyFileExFlags(FILE *fp, const char *filename, int closeit, PyCompilerFlags *flags)如果fp是引用一个和交互设备相关的文件,则返回PyRun_InteractiveLoop()的值,否则返回 PyRun_SimpleFile()的值

int PyRun_AnyFileEx(FILE *fp, const char *filename, int closeit)

int PyRun_AnyFileFlags(FILE *fp, const char *filename, PyCompilerFlags *flags)

int PyRun_AnyFile(FILE *fp, const char *filename)为简版

(6)struct _node* PyParser_SimpleParseStringFlags(const char *str, int start, int flags)使用开始符来解析python代码,结果能更有效的创建一个代码对象

struct _node* PyParser_SimpleParseStringFlag(const char *str, int start, int flags)简版

(7)struct _node* PyParser_SimpleParseFileFlags(
FILE *fp, const char *filename, int start, int flags)用开始符解析文件,代替上面的从内存传递的字符串

struct _node* PyParser_SimpleParseFile(FILE *fp, const char *filename, int start)简版

(8)PyObject* PyRun_StringFlags(const char *str, int start, PyObject *globals,PyObject*locals,PyCompilerFlags *flags)执行字符串中的python代码,返回python代码的python object对象,异常时NULL

PyObject* PyRun_String(const char *str, int start, PyObject *globals, PyObject *locals)简版

(9)PyObject* PyRun_FileFlags(FILE *fp, const char *filename, int start, PyObject *globals, PyObject*locals, PyCompilerFlags *flags)执行文件代码

PyObject* PyRun_FileFlags(FILE *fp, const char *filename, int start, PyObject *globals, PyObject *locals, PyCompilerFlags *flags)

PyObject* PyRun_FileEx(FILE *fp, const char *filename, int start, PyObject *globals, PyObject *locals, int closeit)

PyObject* PyRun_File(FILE *fp, const char *filename, int start, PyObject *globals, PyObject *locals)简版

(10)PyObject* Py_CompileStringFlags(
const char *str, const char *filename, int start, PyCompilerFlags *flags)编译python代码,返回代码对象

PyObject* Py_CompileString(const char *str, const char *filename, int start)简版

(11)开始符种类

int Py_eval_input 适用于单独表达式int Py_file_input 使用于连续语句,编译任意长python代码时使用

int Py_single_input 单一语句,交互式输入

引用计数相关函数

(1)void Py_INCREF(PyObject *o)

void Py_XINCREF(PyObject *o)

增加引用计数,如果不确定对象o是否为空,使用后者

(2)void Py_DECREF(PyObject *o)

void Py_XDECREF(PyObject *o)

减少引用计数,如果不确定对象o是否为空,使用后者

如 果计数为0,则会调用代码释放对象,而释放代码,可能会执行任意想不到的代码,所以对于类似将一个对象从list中移走时,不能直接调用释放代码,应将起 保存在临时变量(增加引用计数不为0,而不调用deallocation)等移出list后,减少引用计数到0,再调用deallocation

(3)void Py_CLEAR(PyObject *o)同上,但我觉得会清空引用计数

2.4以后版本使用Py_IncRef(PyObject *o), Py_DecRef(PyObject *o)

  

PX4|Gazebo模型加载失败排查指南:从环境变量到资源路径的全面解析 本文针对PX4与Gazebo联合仿真中常见的'Unable to get model name'错误,提供了从环境变量配置、资源路径排查到网络访问问题的全面解决方案。详细解析了GZ_SIM_RESOURCE_PATH等关键变量的作用与设置方法,并给出了离线模型库部署等一劳永逸的修复指南,帮助开发者彻底解决无人机模型加载失败问题。 阅读详情

相关推荐

四轮两驱小车(四):STM32驱动5路灰度传感器PID循迹

之前买了一批5路灰度传感器,想用这传感器进行循迹,无奈网上和官方的资料提供的还是比较少,这里还是做一下当初的学习记录。

weixin_51651698的博客 6万+

【FastCAE源码阅读6】C++与Python的集成,实现相互调用

分析FastCAE代码之前先看看C++与Python如何相互调用的。

loveoobaby的博客 796

聚类教程:cisTopic——来自单细胞表观基因组学数据的顺式调控主题的概率建模

之前运行这步的时候报错了如下: 后来发现原因是Ubuntu自动把R包更新到4.2版本,但是Rstudio版本没有更新,更新Rstudio即可,更新Rstudio的教程看此教程:。

watermel__的博客 1051

执行文件或字符串中的Python代码

执行文件或字符串中的Python代码 int Py_Main(int argc, wchar_t **argv) 调用python解释器,并将参数传给解释器,注意第二个参数为wchar_t 类型。返回0:解释器正常退出;返回1:解释器由于异常而退出;返回2:argv不是有效的python命令行。 # 文件名hello.py print("hello world") // 文件名hello.

^_^ 1440

超过4.2万个AOI(地理围栏),深圳市2025年2月15日更新的全类别AOI,矢量图层(全国22个超大特大城市AOI更新系列)

超过4.2万个AOI(地理围栏),深圳市2025年2月15日更新的全类别AOI,矢量图层(全国22个超大特大城市AOI更新系列)

1071

《QGIS快速入门与应用基础》【专栏完整目录】

《QGIS快速入门与应用基础》第一卷专栏完整目录,覆盖 001–328 全部篇目与附录,逐篇可跳转。

LuckyHanMo的博客 1300

C++调用python并获取其返回值

C++调用python并获取其返回值 先上实例代码: C++代码: //初始化py环境 // Py_Initialize(); PyRun_SimpleString("import sys"); PyRun_SimpleString("sys.path.append('./')"); if(!Py_IsInitialized()) { print...

qq_36662876的博客 8226

【SCADA】KingSCADA将数据插入SQLServer的方法

1、创建数据库及数据表格;2、配置ODBC数据源。3、通过KingSCADA与数据库建立连接,将数据写入数据库对应表格。

做有价值的事,积累有价值的笔记! 4960

c调用python获取返回值_从C/C调用python方法,并提取其返回值

如前所述,使用PyRun_SimpleString似乎是一个坏主意。阅读介绍是第一件要了解它的工作原理。首先,你必须了解PyObject,它是C API的基本对象。它可以表示任何类型的python基本类型(string,float,int,…)。许多函数存在将例如python字符串转换为char *或PyFloat转换为double。首先,导入您的模块:PyObject* myModuleStri...

weixin_39879522的博客 564

华为 MetaERP 集成盘古大模型、天筹 AI 求解器等生成式 AI 相关技术能力,结合华为云数智融合平台的支撑,在供应链预测中围绕需求预测、物料匹配

华为 MetaERP 集成盘古大模型、天筹 AI 求解器等生成式 AI 相关技术能力,结合华为云数智融合平台的支撑,在供应链预测中围绕需求预测、物料匹配、风险预警等核心场景开展实践,大幅提升了供应链预测的精准度与效率,以下是具体实践内容及成效: 动态需求预测,降低库存偏差华为供应链涉及数万种采购物料,物料清单层级高,且市场需求波动大。MetaERP 集成华为云 ModelArts 等工具构建专属动态需求预测模型,融合深度学习算法,纳入市场趋势、历史销售、产能数据等多维度信息进行综合预测。在华为自身供应链应

金牌架构师 701

UNet改进(12):融合小波变换与注意力机制的图像分割新方法

本文提出了一种改进的WaveletAttentionUNet架构,通过结合小波变换和注意力机制来增强传统UNet的多尺度特征提取能力。该网络使用分组卷积模拟小波分解,将输入通道扩展为4个子带(LL、LH、HL、HH),并通过通道注意力机制自适应加权各子带特征。网络保留了UNet的编码器-解码器结构,在关键位置集成了WaveletAttention模块。实验证明该方法在医学图像分割等任务中能更好地保持边缘细节和复杂纹理特征,同时保持计算效率。

2501_91516851的博客 758

ubuntu c++调用python函数并获取返回值

c++调用python文件的函数并获取函数的返回值

yuchunhai321的博客 1045

在Android中实现SIM卡的读写操作

在上述代码中,我们创建了一个PhoneStateListener的实例,并重写了onSimStateChanged方法来处理SIM卡状态改变的事件。然后,我们通过调用telephonyManager的listen方法注册了这个监听器,并指定了要监听的事件类型为SIM卡状态的改变。在上述代码中,我们调用telephonyManager的sendUssdRequest方法来发送USSD命令,并通过TelephonyManager.UssdResponseCallback来处理USSD响应和发送失败的情况。

2301_79326510的博客 925

【从零开始】Python学习笔记②

【从零开始】Python学习笔记② 12.29更新笔记②,于上次笔记更新相隔2天。 本次更新主要是Python的基础语法。 本次笔记举的例子代码初学者可能无法看懂,但无需慌张,笔者同是,学习计算机语言无法一步到位,循循渐进即可。 后续将持续保持更新… 目录 1.缩进 1.缩进 Python语言的亮点,相较其它语言,只需使用缩进即可完成语言书写规范 #例子1 if True: ...

300%努力努力再努力的博客 858

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

python学习笔记(二)

List列表是Python中视同最频繁的数据类型,在其他语言中通常叫做数组使用符号 [ ] 定义,数据之间用逗号分隔列表的索引从0开始。从列表中取值,超出索引范围,程序会报错有序且可更改的序列,允许重复。

Amrdt的博客 1602

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Python学习笔记二

Python学习笔记二标签(空格分隔): python入门, pythonsorted: 排序算法 Python 内置的 sorted() 函数就可以对list进行排序:>>> sorted([36, 5, -12, 9, -21])[-21, -12, 5, 9, 36]此外,sorted()函数也是一个高阶函数,它还可以接收一个key函数来实现自定义的排序,例如按绝对值大小排序:>>> sor

Bunschen的博客 470

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

python 学习笔记(超详细)(二)

python 学习笔记(二) 文章目录python 学习笔记(二)1.列表2.元组3.字典4.集合5.内置方法sorted() 1.列表 列表是python的内置可变序列,是包含若干元素的有序连续内存空间,用[ ]表示,列表可以和元组,字典等嵌套使用,可以增加删除元素,列表对象自动进行内存的扩展与收缩 a=[1,2,3,4,5] a.append(6) #将元素x添加到列表尾部 print...

WD 1962

python学习笔记二

python

qq_37017346的博客 1179

Python学习笔记(二)

本节介绍了Python中的布尔类型、比较运算符、条件判断和循环控制语句,是掌握程序逻辑的基础。

2402_82857752的博客 554

python 学习笔记(二)

之前用的是自带的编辑器,师兄推荐可以先用这sublime。之前没用过,网上先下载一个安装包:sublime安装包下载 激活方法我没激活我的代码也能运行,但是激活后好像能快一丢丢。我猜测是我的代码少。大的工程可能就运行不了了。sublime怎么运行代码那个配置图里的代码不太清楚,把下面这个复制进去,就可以按f5直接运行程序了。工程什么的现在还没用到,用到在看。 测试一下有没有安装好。 这是输出结果 这是运行结果。把之前的代码文件打开,运行了一下也没有问题。 下面开始正文,图像噪声添加。有一个问题 只有第一次

书生的博客 295
上一篇: Scheme的Lambda与Ruby的Block
下一篇: Boost.Python 学习笔记
skyremember
博客等级 码龄20年 204粉丝 484原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值