Emacs 文本编辑器,editor
其他的启动选项
现在已经学习了如何运行交互输入的代码,如何以各种方式启动保存在文件中的代码 —— 系统命令行,图标点击,导入与 execs,GUI 如 IDLE,等更多。这囊括了日常用法中的大多数技术,且足够运行本书中你将看到的代码。 然而,还有其他运行 Python 代码的方式,它们的大多数都有特殊的作用。为了本书的完整性和参考性,下面几节会快速浏览这些方式中的一些。其他启动选项——嵌入调用
在一些特殊的领域,Python 代码可能被一个封闭系统自动运行。在这种情况下,我们说 Python 程序被嵌入另一个程序(也就是被另一个程序运行)。Python 代码本身可能被输入到文件文件中,存储在数据库中,从 HTML 页面获取,从 XML 文档解析等等。但从操作的角度看,另一个系统 —— 不是你 —— 可能告诉 Python 来运行你创建的代码。 这种嵌入的执行模式通常被用来支持终端用户自定义 —— 比如,一个游戏程序,可能允许通过在关键时间点运行用户可访问的嵌入的 Python 代码来修改游戏。用户通过提供或修改 Python 代码,可以修改这种类型的系统。因为 Python 代码是被解释的,不需要重新编辑整个系统来整合这个更改(参见第 2 章获取更多关于 Python 代码如何运行的知识) 在这种模式,运行代码的封闭系统可以由 C,C++,或甚至 Java(当 Jython 系统被使用时)来编写。作为一个例子,通过调用 Python 运行时 API(当 Python 被编译在机器上时被创建的库所导出的一套服务)中的函数是可能从一个 C 程序创建和运行 Python 代码的字符串的:在这个 C 代码片段中,用 C 语言编码的程序通过链接它的库来嵌入 Python 解释器,且传给解释器一个 Python 赋值语句来运行。C 程序也可以获得对 Python 模块和对象的访问权限并通过其它的 Python API 工具来处理或执行它们。 本书不是关于 Python/C 集成的,但应该意识到,你可能或不是真正启动你创建的 Python 程序的那个人,这取决于你的组织计划如何使用 Python。不管怎样,通常仍可使用这里描述的交互的和基于文件的启动技术来测试代码(同那些可能最终使用代码的封闭系统隔离开)[10]。
...
Py_Initialize(); // This is C, not Python
PyRun_SimpleString("x = 'brave ' + 'sir robin'"); // But it runs Python code
[10]: 参见 Programming Python (O’Reilly) 获取更多关于在 C/C++ 中嵌入 Python 的知识。嵌入的 API 能直接调用 Python 函数,加载模块,还有更多。而且,注意到 Jython 系统允许 Java 程序使用一个基于 Java 的 API(一个 Python 解释器类)来调用 Python 代码。