16.8 与其他应用程序集成

    当使用Python与其他应用程序集成时,有一些方法我们可以使用。很难提供一个全面的概述,因为应用程序太多了,而且每个应用程序都包含自己独特的功能。我们可以介绍一些通用的设计模式。

    • Python可能会作为应用程序的脚本语言。对大多数例子而言,下面列表中的应用程序简单地把 Python 作为添加功能的主要方法:https://wiki.python.org/moin/ AppsWithPythonScripting
    • 一个Python模块可以实现应用程序的API。有许多应用程序包含用于提供应用程序API绑定的Python模块。某个语言的应用程序的开发者通常会为其他的语言提供API库,包括Python。
    • 可以用ctypes模块直接用Python实现另外一个程序的API。当应用程序库是用C或者C++编写的时候,这种方式工作可以很好地工作。
    • 可以用STDIN和STDOUT创建shell级别的管道,这个管道将我们的应用程序连接到另外一个应用程序中。当创建与shell兼容的应用程序时,我们可能也会考虑使用fileinput模块。
    • 可以用subprocess模块访问应用程序的命令行接口。这可能还包括需要连接到应用程序的标准输入输出接口来与它正确交互。
    • 也可以用C或C++编写自己的与Python兼容的模块。在本例中,我们用C实现外部应用程序的API,提供Python应用程序可以使用的类或函数。比起使用ctypes的API,这样做的性能可能会更好。由于这需要编译C或C++,它需要更多的工具来完成。

    这个级别的灵活性意味着我们通常使用Python作为集成框架或者作为将小应用程序合并为更大的复合应用程序的粘合剂。当将Python作为集成框架使用时,我们通常会包含在另外一个应用程序中定义的类和对象镜像定义。

    还有一些其他的设计要素我们会保留到第17章“模块和包的设计”中介绍。这些都是高级的架构设计要素,已经超出了使用命令行的范畴。