SINTAXIS DE PYTHON

VISTA DE LOS MONTES DE ACENTEJO DESDE LA ESPERANZA, CENTRO-ESTE DE TENERIFE

      Toca ahora, antes de meternos en otras faenas, abordar un concepto, sencillito, con muy poco texto (¡qué alivio!, ¿verdad?) pero básico a la hora de formarnos una idea de la estructura sintáctica de Python y aprovecharla en beneficio propio para ayudarnos a asimilar mejor los contenidos de los capítulos que vendrán a continuación y reforzar todo lo que ya hemos aprendido.
Un programa en Python puede contener varios componentes. Podemos citar cuatro tipos bien diferenciados partiendo de lo más básico a lo más complejo:

  1. OBJETO (OBJECT): Un objeto es un componente básico de una estructura que se aloja en memoria, y que tiene asociado una serie de valores y/u operaciones que se pueden realizar con él. Los datos que manejamos en el lenguaje "cobran vida" gracias a tales objetos (¿nos recuerda esta definición a la de "variable"?). Así pues, un objeto puede ser una cadena literal o string, un número int o de punto flotante (float), una lista, una tupla, un diccionario, etc... o un objeto propiamente dicho.
  2. EXPRESIONES (EXPRESSIONS): Constituye una combinación de valores, constantes, variables, operadores y funciones que son aplicadas de acuerdo a ciertas reglas de sintaxis, la sintaxis de Python, en este caso. Es una definición muy próxima a la de "algoritmo". Por así decirlo, no todas las expresiones son algoritmos, pero todos los algoritmos  son una expresión.
  3. SENTENCIAS (SENTENCES): También se las conoce en el argot como "declaraciones". Son un conjunto de expresiones. Se consideran las unidades mínimas ejecutables de un programa.
  4. MÓDULOS (MODULES): Conjunto de sentencias ordenadas de acuerdo a un fin concreto.
Podemos añadir un quinto componente, los PAQUETES (PACKAGES), que son un conjunto de módulos agrupados por su afinidad funcional pero que en sí mismos no son ejecutables, aunque las básicas, por así decirlo, son las cuatro anteriores. Un programa, en cambio, también se puede entender como un conjunto de módulos relacionados entre sí para obtener, esta vez sí, un resultado específico.


       OBJETO => EXPRESIÓN => SENTENCIA => MÓDULO => PROGRAMA



Dentro de los objetos, a su vez, podemos distinguir tres tipos:
  1. OBJETO: Tal cual, en su sentido más genérico. Recordemos:  en la Programación Orientada a Objetos, y Python apunta mucho en esa dirección, CASI TODO SON OBJETOS.
  2. OBJETOS BUILT-IN: Objetos preconstruidos por el propio lenguaje. Constituyen objetos integrados dentro del lenguaje que Python utiliza para facilitar las tareas de programación, permitiéndonos ahorrar tiempo al construir objetos o estructuras de datos automáticos; facilita la generación de estructuras complejas basadas en ellos, y consiguen un rendimiento elevado con un consumo mínimo de memoria durante el proceso de ejecución. Estos objetos son números, strings, booleanos, tuplas, listas, conjuntos, diccionarios y ficheros.
  3. OBJETO NONE: Ya hemos hablado de este objeto especial de Python, que significa "ninguna cosa", en una entrada precedente y a la que nos remitimos y que, muy sucíntamente, se utiliza para asignar un valor nulo a una variable determinada.
Vamos a hablar ahora de un concepto que nos ayudará a comprender un poquito mejor cómo lee el intérprete de Python nuestro código:

      EL FLUJO DE EJECUCIÓN:

   
      El sentido de la lectura es el prototípico occidental, el más extendido en el mundo, que va de izquierda a derecha y de arriba a abajo. Consecuentemente, el FLUJO DE EJECUCIÓN, que se basa en la lectura y ejecución de las líneas de instrucción o de código, como renglones de escritura en un párrafo, ocurre en este formato: izquierda ➤ derecha ➤ arriba ➤ abajo, exactamente igual que hacemos todos cuando leemos este manual o hacemos lo propio con cualquier libro, revista, cuaderno, anuncio, cita, .. y hasta con las multas de tráfico.
Sin embargo, este FLUJO DE EJECUCIÓN puede modificarse, cambiando su dirección (de abajo a arriba) antes que de sentido (de derecha a izquierda), aunque esto último, en la práctica, no sucede casi nunca. 
Los responsables de estas modificaciones son dos elementos de la programación de Python: Las herramientas de control de flujo (condicionales if/elif/else y while y el loop for/in) y las funciones definidas por el usuario (def).
Con las herramientas de control de flujo que, igual que las funciones definidas por el usuario, estudiaremos más adelante, se produce una bifurcación, en el caso de las condicionales, que hace que el flujo de ejecución tome un camino u otro o, en el caso del loop, que se establezca una iteración recurrente de abajo a arriba formando una especie de sinusoide. ➿➿➿
Con las funciones definidas por el usuario, se produce un "salto" que rodea al cuerpo de la función, ignorándola, hasta que es llamada por su nombre en una línea de instrucción concreta en cualquier lugar de nuestro código, eso sí, primero se define la función y después se la llama y no al revés, que se llame primero a una función y después se defina la misma, porque Python, por la naturaleza misma del FLUJO DE EJECUCIÓN, no la leerá. Obvio, ¿no?
Una vez el FLUJO DE EJECUCIÓN lee el nombre de una función, desanda el camino  remontando el código,  a la búsqueda, como un auténtico Indiana Jones binario, hasta encontrar la función con el nombre indicado y ejecuta el código interno de la misma (cuerpo de la función), aplicando el resultado (pie de la función) allí, en el punto exacto, desde donde cambió la dirección dado que fue aquí desde donde se la requirió. Una vez ha ejecutado el código interno de la función, si éste se ha resuelto satisfactoriamente, el FLUJO DE EJECUCIÓN continúa su lectura a partir de este punto código abajo. Si el resultado es un error, normalmente se producirá una excepción de Python que detendrá automáticamente el FLUJO DE EJECUCIÓN y el programa deja de correr, a menos que hayamos  "manejado las excepciones" para que el FLUJO DE EJECUCIÓN "ignore" el error y continúe leyendo.
Veamos un esquema que nos ayude a esclarecer el concepto:



Y con esto, nos comemos un bocadillo para coger energía, tomamos aliento, y pasamos al siguiente capítulo.

RUINAS DE UN MOLINO DE AGUA EN EL PAGO DE LAS VEGAS, EL PUEBLO FUNDACIONAL DE GRANADILLA DE ABONA, EN EL SUROESTE DE TENERIFE.



No hay comentarios:

Publicar un comentario