Python 的 C 预处理器宏等价物

C Preprocessor Macro equivalent for Python

我习惯在 C 中定义宏(不仅仅是常量)

#define loop(i,a,b) for(i=a; i<b; ++i)
#define long_f(a,b,c) (a*0.123 + a*b*5.6 - 0.235*c + 7.23*c - 5*a*a + 1.5)

有没有办法在 python 中使用 预处理 而不是函数来做到这一点?

*通过 preprocess 我的意思是在 运行ning 代码之前替换定义的出现(实际上不是整个代码而是代码的其余部分,因为它是代码的一部分,我猜它会在 运行 时间内替换所有内容。

如果有,值得吗? 运行时间会有显着差异吗?

有办法吗?是的。总有办法。你应该这样做吗?应该不是。

只需定义一个函数来执行您想要的操作。如果您只是担心代码变得很长并且想要一个单行代码,您可以使用 lambda 函数。

long_f = lambda a,b,c: a*0.123 + a*b*5.6 - 0.235*c + 7.23*c - 5*a*a + 1.5
long_f(1,2,3) == 28.808

当然,您的第一个示例在 Python 中已经更漂亮了。

for i in range(a,b):
    ...

编辑:为了完整起见,我应该按要求回答问题。如果你绝对必须预处理你的 Python 代码,你可以使用任何设计用于模板化网页的编程语言。例如,我听说 PHP 用于预处理代码。您编写代码而不是 HTML。当你想要预处理的东西时,你会做你的 PHP 块。

好吧,如果您要执行一些可以提前执行的非常困难的计算,那么,这也许是有道理的:通常用户更喜欢快速程序而不是慢程序。

但是,就'raw performance',也就是算术运算的速度而言,恐怕python不是一个好的选择。至少如果我们谈论标准 python 实现,称为 CPython.

或者,您可以检查其他变体:

  • PyPy。这是另一种 python 实现,纯 Python。感谢 JIT 编译器,它提供了更好的性能,但需要更多的内存。
  • Cython。这是对 Python 的扩展,它允许人们 [方便] 为代码的性能关键部分创建可编译的片段。
  • 使用你喜欢的任何外部预处理器。 M4 and FilePP 是我首先想到的,但有很多。