Macro de preprocesador C equivalente para Python

Yo uso para definir macros (no solo constantes) en C como

#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) 

¿Hay alguna forma de hacer esto en Python usando un preprocesamiento en lugar de una función?

* Por preproceso me refiero a algo que reemplaza las apariciones de la definición antes de ejecutar el código (en realidad no todo el código, sino el rest del código, porque como es parte del código, supongo que reemplazará todo durante el tiempo de ejecución).

Si la hay, vale la pena? ¿Habrá una diferencia significativa en el tiempo de ejecución?

    Bueno, si va a realizar algunos cálculos realmente difíciles que podrían realizarse por adelantado, entonces, quizás, esto tenga sentido: por lo general, los usuarios están más contentos con los progtwigs rápidos que con los lentos.

    Pero, me temo que Python no es una buena opción cuando se trata de “rendimiento en bruto”, es decir, la velocidad de los cálculos aritméticos. Al menos si hablamos de la implementación estándar de python, llamada CPython.

    Alternativamente, puedes consultar otras variantes:

    • PyPy . Esta es una implementación alternativa de Python, en Python puro. Gracias a un comstackdor JIT, ofrece un mejor rendimiento pero requiere mucha más memoria.
    • Cython . Esta es una extensión de Python, que le permite a uno [convenientemente] crear fragmentos comstackbles para las partes críticas del código.
    • Utilice el preprocesador externo que desee. M4 y FilePP son lo que me viene a la mente primero, pero hay muchos de ellos.

    ¿Hay alguna manera? Sí. Siempre hay una manera. ¿Deberías hacerlo? Probablemente no.

    Solo define una función que haga lo que quieras. Si solo le preocupa que el código se haga realmente largo y desee una sola línea, puede usar una función 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 

    Y, por supuesto, tu primer ejemplo ya es mucho más bonito en Python.

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

    Edición : para completar, debo responder a la pregunta como se pregunta. Si ABSOLUTAMENTE DEBE preprocesar su código Python, puede usar cualquier lenguaje de progtwigción diseñado para la creación de plantillas como páginas web. Por ejemplo, he oído que PHP se utiliza para preprocesar código. En lugar de HTML, escribes tu código. Cuando quieres algo preprocesado, haces tus bloques de PHP.