Python学习笔记(二)

本文是Python学习笔记的第二部分,主要探讨Python中的文件操作,包括打开、读写文件以及如何使用`fp`进行文件处理。同时,文章还介绍了`struct`模块在处理结构化数据中的应用,以及如何通过`command`和`input`来增强用户交互体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值