其他启动选项——嵌入调用

未匹配的标注

在一些特殊的领域,Python代码可能被一个封闭系统自动运行。在这种情况下,我们说Python程序被嵌入(也就是被运行)另一个程序。Python代码本身可能被输入到文件文件中,存储在数据库中,从HTML页面获取,从XML文档解析,等等。但从操作的角度看,另一个系统——不是你——可能告诉Python来运行你创建的代码。

这种嵌入的执行模式通常被用来支持终端用户自定义——比如,一个游戏程序,可能允许通过在关键时间点运行用户可访问的嵌入Python代码来修改游戏。用户通过提供或修改Python代码,可以修改这种类型的系统。因为Python代码是被解释的,没必要重新编辑整个系统来包含这个更改(参见第2章获取更多关于Python代码如何运行的知识)

在这种模式,运行代码的封闭系统可以由C,C++,或甚至Java(当Jython系统被使用时)来编写。作为一个例子,通过调用Python运行时API(当Python被编译在你的机器上时被创建的库导出的一套服务)中的函数是可能从一个C程序创建和运行Python代码的字符串的:

...
Py_Initialize(); // This is C, not Python
PyRun_SimpleString("x = 'brave ' + 'sir robin'"); // But it runs Python code

在这个C代码片段中,用C语言编码的程序通过链接它的库来嵌入Python解释器,且传给解释器一个Python赋值语句来运行。C程序也可以获得对Python模块和对象的访问权限并通过其他的Python API工具来处理和执行它们。

本书不是关于Python/C集成的,但你应该意识到,你可能或不是真正启动你创建的Python程序的那个人,这取决于你的组织计划使用Python。不管怎样,你通常仍可使用这里描述的交互的和基于文件的启动技术,同那些可能最终使用代码的封闭系统隔离开来测试它[10]。


[10]: 参见 *Programming Python (O’Reilly) 获取关于在C/C++中嵌入Python的更多知识。嵌入的API能直接调用Python函数,加载模块,等更多。而且,注意到Jython 系统允许 Java程序使用一个基于Java的API(一个Python解释器类)来调用Python代码。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~