Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python的C预处理器宏等价物_Python_Macros_Preprocessor - Fatal编程技术网

Python的C预处理器宏等价物

Python的C预处理器宏等价物,python,macros,preprocessor,Python,Macros,Preprocessor,我用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) #为(i=a;i定义循环(i,a,b)有方法吗?是的。总有方法。你应该这样做吗?可能没有 只需定义一个函数就可以了。如果您只是担心代码变得很长,并且需要一行程序,那么可以使用lambda函数 long_f = lambda

我用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)

#为(i=a;i定义循环(i,a,b)有方法吗?是的。总有方法。你应该这样做吗?可能没有

只需定义一个函数就可以了。如果您只是担心代码变得很长,并且需要一行程序,那么可以使用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块。

好吧,如果您要执行一些可以提前执行的非常困难的计算,那么,也许这是有意义的:通常用户对快速程序比对慢速程序更满意

但是,对于“原始性能”,也就是算术计算的速度,我恐怕python不是一个好的选择。至少如果我们谈论标准的python实现,称为CPython

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

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

传统上,C预处理器是一个独立的程序,在大多数类似POSIX的系统中,它仍然可用作
cpp
。当然,还有许多其他预处理器可用,这是当今最引人注目的。如果你只搜索一下,也有其他类似C的预处理器。然而,大多数Python程序员会对你皱眉如果你使用了预处理器和类似的宏,那么你的代码也是如此。事实上,大多数C程序员也是如此。Python是一种解释语言,没有一种类似C的预处理器概念可以在编译之前替换标记。请看。