非常高级别层¶
本章中的函数允许您执行文件或缓冲区中给定的Python源代码,但它们不允许您以更详细的方式与解释器进行交互。
其中一些函数接受语法中的开始符号作为参数。可用的开始符号是 Py_eval_input
, Py_file_input
和 Py_single_input
. 以下是接受它们作为参数的函数。
还要注意,其中几个函数 FILE* 参数。需要仔细处理的一个特殊问题是 FILE
不同C库的结构可能不同且不兼容。在Windows下(至少),动态链接扩展可以实际使用不同的库,因此应该注意 FILE* 只有在确定参数是由Python运行时使用的同一个库创建的情况下,才会将参数传递给这些函数。
-
int Py_Main(int argc, wchar_t **argv)¶
标准解释器的主程序。这对于嵌入python的程序是可用的。这个 argc 和 argv 参数应与传递给C程序的参数完全相同。
main()
函数(根据用户的区域设置转换为wchar_t)。需要注意的是,参数列表可能会被修改(但参数列表指向的字符串的内容不会被修改)。返回值为0
如果解释器正常退出(即,无例外情况),1
如果解释器因异常退出,或2
如果参数列表不代表有效的python命令行。请注意,如果另一个未处理的
SystemExit
被引发,此函数将不返回1
但退出进程,只要Py_InspectFlag
未设置。
-
int PyRun_AnyFile(FILE *fp, const char *filename)¶
这是一个简化的接口
PyRun_AnyFileExFlags()
下面,离开 闭上 设置为0
和 旗帜 设置为NULL
.
-
int PyRun_AnyFileFlags(FILE *fp, const char *filename, PyCompilerFlags *flags)¶
这是一个简化的接口
PyRun_AnyFileExFlags()
下面,离开 closeit 参数设置为0
.
-
int PyRun_AnyFileEx(FILE *fp, const char *filename, int closeit)¶
这是一个简化的接口
PyRun_AnyFileExFlags()
下面,离开 旗帜 参数设置为NULL
.
-
int PyRun_AnyFileExFlags(FILE *fp, const char *filename, int closeit, PyCompilerFlags *flags)¶
如果 fp 指与交互设备(控制台或终端输入或UNIX伪终端)相关联的文件,返回
PyRun_InteractiveLoop()
,否则返回PyRun_SimpleFile()
. 文件名 从文件系统编码中解码 (sys.getfilesystemencoding()
)如果 文件名 是NULL
,此函数使用"???"
作为文件名。
-
int PyRun_SimpleString(const char *command)¶
这是一个简化的接口
PyRun_SimpleStringFlags()
下面,离开PyCompilerFlags
* 参数设置为NULL
.
-
int PyRun_SimpleStringFlags(const char *command, PyCompilerFlags *flags)¶
从中执行python源代码 命令 在
__main__
模块根据 flags 参数。如果__main__
不存在,已创建。返回0
关于成功还是-1
如果引发异常。如果出现错误,就无法获取异常信息。为了…的意义 flags 见下文。请注意,如果另一个未处理的
SystemExit
被引发,此函数将不返回-1
但退出进程,只要Py_InspectFlag
未设置。
-
int PyRun_SimpleFile(FILE *fp, const char *filename)¶
这是一个简化的接口
PyRun_SimpleFileExFlags()
下面,离开 闭上 设置为0
和 旗帜 设置为NULL
.
-
int PyRun_SimpleFileEx(FILE *fp, const char *filename, int closeit)¶
这是一个简化的接口
PyRun_SimpleFileExFlags()
下面,离开 旗帜 设置为NULL
.
-
int PyRun_SimpleFileExFlags(FILE *fp, const char *filename, int closeit, PyCompilerFlags *flags)¶
类似于
PyRun_SimpleStringFlags()
,但是Python源代码是从 fp 而不是存储器中的字符串。 文件名 应该是文件的名称,它是从 filesystem encoding and error handler 。如果 密闭 为真,则在此之前关闭文件PyRun_SimpleFileExFlags()
返回。注解
在Windows上, fp 应以二进制模式打开(例如
fopen(filename, "rb")
). 否则,Python可能无法处理LF行结尾正确的脚本文件。
-
int PyRun_InteractiveOne(FILE *fp, const char *filename)¶
这是一个简化的接口
PyRun_InteractiveOneFlags()
下面,离开 旗帜 设置为NULL
.
-
int PyRun_InteractiveOneFlags(FILE *fp, const char *filename, PyCompilerFlags *flags)¶
从与交互式设备关联的文件中读取并执行单个语句(根据 旗帜 论点。系统将使用以下命令提示用户
sys.ps1
和sys.ps2
。 文件名 是从 filesystem encoding and error handler 。返回
0
成功执行输入时,-1
如果存在异常,或者errcode.h
如果出现解析错误,请包含作为Python一部分分发的文件。(注意errcode.h
不包括在Python.h
,因此,如果需要,必须特别包括。)
-
int PyRun_InteractiveLoop(FILE *fp, const char *filename)¶
这是一个简化的接口
PyRun_InteractiveLoopFlags()
下面,离开 旗帜 设置为NULL
.
-
int PyRun_InteractiveLoopFlags(FILE *fp, const char *filename, PyCompilerFlags *flags)¶
读取并执行与交互式设备关联的文件中的语句,直到到达EOF。系统将使用以下命令提示用户
sys.ps1
和sys.ps2
。 文件名 是从 filesystem encoding and error handler 。退货0
在EOF时为负数,或在故障时为负数。
-
int (*PyOS_InputHook)(void)¶
可以设置为指向带有原型的函数
int func(void)
. 当python的解释器提示即将变为空闲并等待来自终端的用户输入时,将调用该函数。返回值被忽略。重写这个钩子可以用来将解释器的提示与其他事件循环集成,如Modules/_tkinter.c
在python源代码中。
-
char *(*PyOS_ReadlineFunctionPointer)(FILE*, FILE*, const char*)¶
可以设置为指向带有原型的函数
char *func(FILE *stdin, FILE *stdout, char *prompt)
,重写用于在解释器提示下读取一行输入的默认函数。函数应输出字符串 促使 如果不是的话NULL
,然后从提供的标准输入文件中读取一行输入,返回结果字符串。例如,readline
模块设置此钩子以提供行编辑和制表符完成功能。结果必须是由分配的字符串
PyMem_RawMalloc()
或PyMem_RawRealloc()
或NULL
如果发生错误。在 3.4 版更改: 结果必须按
PyMem_RawMalloc()
或PyMem_RawRealloc()
,而不是由PyMem_Malloc()
或PyMem_Realloc()
.
-
struct _node *PyParser_SimpleParseString(const char *str, int start)¶
这是一个简化的接口
PyParser_SimpleParseStringFlagsFilename()
下面,离开 文件名 设置为NULL
和 旗帜 设置为0
.
-
struct _node *PyParser_SimpleParseStringFlags(const char *str, int start, int flags)¶
这是一个简化的接口
PyParser_SimpleParseStringFlagsFilename()
下面,离开 文件名 设置为NULL
.
-
struct _node *PyParser_SimpleParseStringFlagsFilename(const char *str, const char *filename, int start, int flags)¶
从解析Python源代码 str 使用开始令牌 开始 根据 旗帜 论点。结果可用于创建可有效评估的代码对象。如果代码段必须多次求值,则这很有用。 文件名 是从 filesystem encoding and error handler 。
-
struct _node *PyParser_SimpleParseFile(FILE *fp, const char *filename, int start)¶
这是一个简化的接口
PyParser_SimpleParseFileFlags()
下面,离开 flags 设置为0
.
-
struct _node *PyParser_SimpleParseFileFlags(FILE *fp, const char *filename, int start, int flags)¶
类似
PyParser_SimpleParseStringFlagsFilename()
但python源代码是从 fp 而不是内存中的字符串。
-
PyObject *PyRun_String(const char *str, int start, PyObject *globals, PyObject *locals)¶
- Return value: New reference.
这是一个简化的接口
PyRun_StringFlags()
下面,离开 旗帜 设置为NULL
.
-
PyObject *PyRun_StringFlags(const char *str, int start, PyObject *globals, PyObject *locals, PyCompilerFlags *flags)¶
- Return value: New reference.
从执行python源代码 str 在对象指定的上下文中 globals 和 locals 具有由指定的编译器标志 flags . globals 必须是字典; locals 可以是实现映射协议的任何对象。参数 开始 指定应用于分析源代码的开始标记。
返回将代码作为python对象执行的结果,或者
NULL
如果引发异常。
-
PyObject *PyRun_File(FILE *fp, const char *filename, int start, PyObject *globals, PyObject *locals)¶
- Return value: New reference.
这是一个简化的接口
PyRun_FileExFlags()
下面,离开 闭上 设置为0
和 旗帜 设置为NULL
.
-
PyObject *PyRun_FileEx(FILE *fp, const char *filename, int start, PyObject *globals, PyObject *locals, int closeit)¶
- Return value: New reference.
这是一个简化的接口
PyRun_FileExFlags()
下面,离开 旗帜 设置为NULL
.
-
PyObject *PyRun_FileFlags(FILE *fp, const char *filename, int start, PyObject *globals, PyObject *locals, PyCompilerFlags *flags)¶
- Return value: New reference.
这是一个简化的接口
PyRun_FileExFlags()
下面,离开 closeit 设置为0
.
-
PyObject *PyRun_FileExFlags(FILE *fp, const char *filename, int start, PyObject *globals, PyObject *locals, int closeit, PyCompilerFlags *flags)¶
- Return value: New reference.
类似于
PyRun_StringFlags()
,但是Python源代码是从 fp 而不是存储器中的字符串。 文件名 应该是文件的名称,它是从 filesystem encoding and error handler 。如果 密闭 为真,则在此之前关闭文件PyRun_FileExFlags()
返回。
-
PyObject *Py_CompileString(const char *str, const char *filename, int start)¶
- Return value: New reference.
这是一个简化的接口
Py_CompileStringFlags()
下面,离开 旗帜 设置为NULL
.
-
PyObject *Py_CompileStringFlags(const char *str, const char *filename, int start, PyCompilerFlags *flags)¶
- Return value: New reference.
这是一个简化的接口
Py_CompileStringExFlags()
下面,用 optimize 设置为-1
.
-
PyObject *Py_CompileStringObject(const char *str, PyObject *filename, int start, PyCompilerFlags *flags, int optimize)¶
- Return value: New reference.
在中解析和编译python源代码 str ,返回结果代码对象。开始令牌由 开始 ;这可以用来约束可以编译的代码,并且应该
Py_eval_input
,Py_file_input
或Py_single_input
. 由指定的文件名 文件名 用于构造代码对象,并可能出现在回溯或SyntaxError
异常消息。这种回报NULL
如果无法分析或编译代码。整数 optimize 指定编译器的优化级别;值为
-1
选择解释器的优化级别,如-O
选项。显式级别是0
(无优化;__debug__
是真的)1
(断言被删除,__debug__
是假的)2
(文档字符串也被删除)。3.4 新版功能.
-
PyObject *Py_CompileStringExFlags(const char *str, const char *filename, int start, PyCompilerFlags *flags, int optimize)¶
- Return value: New reference.
喜欢
Py_CompileStringObject()
,但是 文件名 是从 filesystem encoding and error handler 。3.2 新版功能.
-
PyObject *PyEval_EvalCode(PyObject *co, PyObject *globals, PyObject *locals)¶
- Return value: New reference.
这是一个简化的接口
PyEval_EvalCodeEx()
,只包含代码对象,以及全局和局部变量。其他参数设置为NULL
.
-
PyObject *PyEval_EvalCodeEx(PyObject *co, PyObject *globals, PyObject *locals, PyObject *const *args, int argcount, PyObject *const *kws, int kwcount, PyObject *const *defs, int defcount, PyObject *kwdefs, PyObject *closure)¶
- Return value: New reference.
对预编译的代码对象进行评估,并为其评估提供特定的环境。此环境由全局变量字典、局部变量的映射对象、参数数组、关键字和默认值、的默认值字典组成。 keyword-only 参数和单元格的闭合元组。
-
type PyFrameObject¶
用于描述帧对象的对象的C结构。此类型的字段随时可能更改。
-
PyObject *PyEval_EvalFrame(PyFrameObject *f)¶
- Return value: New reference.
评估执行框架。这是一个简化的接口
PyEval_EvalFrameEx()
,以实现向后兼容性。
-
PyObject *PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)¶
- Return value: New reference.
这是Python解释的主要、未上漆的功能。与执行帧关联的代码对象 f 执行,根据需要解释字节码并执行调用。附加的 投掷旗 通常可以忽略参数-如果为true,则会立即引发异常;这用于
throw()
生成器对象的方法。在 3.4 版更改: 此函数现在包含一个调试断言,以帮助确保它不会自动放弃活动异常。
-
int PyEval_MergeCompilerFlags(PyCompilerFlags *cf)¶
此函数更改当前评估框架的标志,并在成功时返回true,在失败时返回false。
-
int Py_eval_input¶
独立表达式的python语法的起始符号;用于
Py_CompileString()
.
-
int Py_file_input¶
从文件或其他源读取的语句序列的python语法的起始符号;用于
Py_CompileString()
. 这是编译任意长的Python源代码时要使用的符号。
-
int Py_single_input¶
单个语句的python语法的起始符号;用于
Py_CompileString()
. 这是用于交互式解释器循环的符号。
-
struct PyCompilerFlags¶
这是用于保存编译器标志的结构。如果只编译代码,则将其作为
int flags
,如果正在执行代码,则将其作为PyCompilerFlags *flags
. 在这种情况下,from __future__ import
可以修改 flags .无论何时
PyCompilerFlags *flags
是NULL
,cf_flags
被视为等于0
以及由于以下原因而进行的任何修改:from __future__ import
被丢弃。-
int cf_flags¶
编译器标志。
-
int cf_feature_version¶
cf_feature_version 是次要的python版本。它应该初始化为
PY_MINOR_VERSION
.默认情况下,该字段被忽略,仅当且仅当
PyCF_ONLY_AST
在中设置了标志 cf_flags .
在 3.8 版更改: 补充 cf_feature_version 字段。
-
int cf_flags¶