是否可以“自定义”python?

Joh*_*rtl 1 python-3.x

我可以更改 Python 的核心功能吗,例如,重写它以使用say("Hello world")而不是print("Hello world")?如果这是可能的,如何做到这一点?

Jak*_*ern 5

我看到了一些关于如何实现这一点的可能性。我已经按照需要多少编程/它们有多讨厌的顺序排列它们:

重命名内置函数

如果,在你的榜样,你只是更舒适的使用say()printf()低于print(),那么你可以像其他人回答,只是别名的内置函数到您自己的函数类似say=print

重写内置函数

让我们假设我们不信任 的官方实现,print()而我们想要实现我们自己的。Python 中的许多内部结构stdin都包含在sys库中。如果你愿意,你可以实现你自己的。几年前我在这里问了一个问题,该问题讨论了如何重命名可能有启发性的_变量以ans供查看。

通过预处理器发送您的代码

好了,gcc并不需要C代码作为输入。如果您使用正确的预编译器标志,那么#define在将源代码发送到 python 之前,您可以避免评估源代码中的宏。从技术上讲,这是一个有效的答案,但令人讨厌。

用另一种语言编写模块

Cython(用 C 编写的 python)可以用 C 为其编写模块。您可以为printfC(或汇编,如果您愿意)构建一个包装器,并在您的 Python 代码中使用该库。

重新编译 Python

不幸的是,并非所有令牌都可以执行上述操作。如果出于某种幻想,我们想使用whilst循环而不是while循环怎么办?实现这一点的唯一方法实际上是改变 python 本身的功能。现在,这不适合胆小的人或新程序员。编译器真的很复杂。

然而,由于 Python 是开源的,你可以在这里下载源代码,理论上你可以进入编译器并手动进行所有你想要的编辑,然后编译你的 Python 版本并使用它。您的代码绝不是可移植的(因为本质上您将制作一个 python 的分支),但您可以在技术上做到这一点。

或者只是符合 Python 标准。这也有效。

编写 PEP

Python 是一门有生命力的语言。它不断更新。“包含哪些内容”的管理机构是 BDFL 代表和委员会,但任何人都可以编写 Python 增强提案,建议以某种方式改变语言。Python 中的大多数功能都是从 PEP 开始的。有关更多详细信息,请参阅PEP 0001