Cuando se ejecuta un módulo de Python (archivo .py), las declaraciones de nivel superior en él se ejecutan en el orden en que aparecen, de arriba a abajo (de principio a fin). Esto significa que no puede hacer referencia a algo hasta que lo haya definido. Por ejemplo, lo siguiente generará el error que se muestra:
c = a + b
a = 13
b = 17
A diferencia de muchos otros idiomas, def
y class
las declaraciones son ejecutables en Python, no sólo declarativa, de modo que no se puede hacer referencia a cualquiera a
o b
hasta que eso ocurra, y que están definidos. Esta es la razón por la que su primer ejemplo tiene problemas: está haciendo referencia a la Kerma()
función antes de def
que se haya ejecutado su declaración y el cuerpo se haya procesado y el objeto de función resultante esté vinculado al nombre de la función, por lo que no está definido en ese punto del script.
Los programas en lenguajes como C ++ generalmente se preprocesan antes de ejecutarse y durante esta etapa de compilación, todo el programa y los #include
archivos a los que hace referencia se leen y procesan de una vez. A diferencia de Python, este lenguaje presenta declaraciones declarativas que permiten declarar (pero no definir) el nombre y la secuencia de llamada de las funciones (o el tipo estático de variables), antes de su uso para que cuando el compilador encuentre su nombre, tenga suficiente información para verificar uso, que principalmente implica la verificación de tipos y conversiones de tipos, ninguno de los cuales requiere que se hayan definido aún sus contenidos reales o cuerpos de código.