1. Prólogo
El PDF de este documento está disponible |AQUÍ|.
Los ejemplos de este documento están disponibles |AQUÍ|.
Este documento ofrece una lista de scripts de Python en diferentes ámbitos:
- los fundamentos del lenguaje;
- la administración de bases de datos MySQL y PostgreSQL;
- la programación de redes TCP/ IP (protocolos HTTP, POP3, IMAP, SMTP);
- la programación web MVC con el marco de trabajo FLASK;
- las arquitecturas de tres capas y la programación mediante interfaces;
Este no es un curso exhaustivo de Python, sino una recopilación de ejemplos dirigida a desarrolladores que ya hayan utilizado un lenguaje de script como Perl, PHP, VBScript, o para desarrolladores acostumbrados a lenguajes tipados como Java o C# y que estén interesados en descubrir un lenguaje de script orientado a objetos. Este documento no es adecuado para lectores que nunca hayan programado o que tengan poca experiencia en programación.
Este documento tampoco es una recopilación de «buenas prácticas». Por lo tanto, es posible que un desarrollador con experiencia considere que algunos códigos podrían estar mejor escritos. El único objetivo de este documento es ofrecer ejemplos a quienes deseen iniciarse en el lenguaje Python 3 y el marco Flask. Posteriormente, podrán profundizar su aprendizaje con otros documentos.
Los scripts están comentados y se muestran los resultados de su ejecución. En ocasiones se proporcionan explicaciones adicionales. El documento requiere una lectura activa: para comprender un script, es necesario leer tanto su código como sus comentarios y los resultados de su ejecución.
Los ejemplos del documento están disponibles en la dirección |AQUÍ|:

El documento es una actualización de uno anterior publicado en junio de 2011 |https://tahe.developpez.com/tutoriels-cours/python/|. El documento de 2011 se había creado con el intérprete de Python 2.7. Desde entonces, han aparecido nuevas versiones de Python 3.x. En febrero de 2020, estamos en la versión 3.8. Las versiones 3.x han traído consigo una discontinuidad en la portabilidad entre versiones: los códigos que se ejecutan en Python 2.7 pueden resultar inutilizables en Python 3.x. Este es particularmente el caso de la escritura en la consola. En la versión 2.7 se puede escribir [print "toto"], mientras que en la versión 3.x hay que escribir [print("toto")]: es necesario agregar paréntesis. Esta simple modificación hace que la mayoría de los códigos proporcionados con el documento de 2011 no se puedan usar directamente con Python 3.x. Es necesario modificarlos.
Este nuevo documento no se limita a actualizar los códigos de 2011 para que sean ejecutables con Python 3.8:
- las secciones sobre programación TCP-IP y el uso de bases de datos han sufrido cambios importantes;
- la sección sobre programación web, que antes era solo una introducción, ahora es un curso completo que utiliza el marco de trabajo FLASK;
Para desarrollar este curso, seguí un enfoque inusual: realicé una adaptación del curso PHP [Introducción al lenguaje PHP7 con ejemplos (2019)]. Por lo tanto, no seguí las estructuras tradicionales de los cursos de Python o Flask. Ante todo, quería saber cómo podía hacer con Python 3 lo que había hecho en PHP 7. El resultado es que pude rehacer, en Python 3 / Flask, todos los ejemplos del curso PHP 7.
Este documento puede contener errores o omisiones. El lector puede utilizar el hilo de discusión |foro| para señalarlos.
El contenido del documento es el siguiente:
Capítulo | Carpeta del código | Contenido |
Presentación del curso | ||
Instalación de un entorno de trabajo | ||
[bases] | Fundamentos del lenguaje Python: estructuras del lenguaje, tipos de datos, funciones, salida a consola, cadenas de formato, conversión de tipos, listas, diccionarios y expresiones regulares | |
[strings] | Notación de cadenas de caracteres – métodos de la clase <str> – codificación/decodificación de cadenas de caracteres en UTF-8 | |
[exceptions] | Manejo de excepciones | |
[fonctions] | Ámbito de las variables – Modo de paso de parámetros – Uso de módulos – La ruta de Python – Parámetros con nombre – Funciones recursivas | |
[fichiers] | Lectura y escritura de un archivo de texto – manejo de archivos codificados en UTF-8 – manejo de archivos jSON | |
[impots/v01] | Versión 1 del ejercicio de aplicación: cálculo del impuesto sobre la renta. La aplicación cuenta con 18 versiones; la versión 1 implementa una solución procedimental | |
[imports] | Gestión de las dependencias de una aplicación mediante la importación de módulos: se presenta un método de gestión de dependencias, que se utiliza a lo largo de todo el documento; gestión de la ruta de Python | |
[impots/v02] | La versión 2 de la aplicación retoma la versión 1 al reunir todas las constantes de configuración en un archivo de configuración que también administra la ruta de Python | |
[impots/v03] | La versión 3 de la aplicación retoma la versión 2 utilizando funciones encapsuladas en un módulo —la gestión de las dependencias se realiza mediante la configuración— e introduce el archivo jSON para leer los datos necesarios para el cálculo del impuesto y escribir los resultados de los cálculos | |
[classes/01] | Clases – herencia – métodos y propiedades – getters / setters – constructor – propiedad [__dict__] | |
[classes/02] | Presentación de las clases [BaseEntity] y [MyException] utilizadas en el resto del documento – [BaseEntity] facilita las conversiones entre objetos y diccionarios | |
[troiscouches] | Arquitectura en capas y programación por interfaces. Este capítulo presenta los métodos de programación utilizados en el resto del documento | |
[impots/v04] | Versión 4 de la aplicación: esta versión implementa una solución con una arquitectura en capas, programación mediante interfaces y el uso de clases derivadas de [BaseEntity] y [MyException] | |
[databases/mysql] | Instalación de SGBD MySQL – conexión a una base de datos – creación de una tabla – ejecución de órdenes SQL SELECT, UPDATE, DELETE, INSERT – transacción – consultas SQL configuradas | |
[databases/postgresql] | Instalación de SGBD PostgreSQL – conexión a una base de datos – creación de una tabla – ejecución de órdenes SQL SELECT, UPDATE, DELETE, INSERT – transacción – consultas SQL configuradas | |
[databases/anysgbd] | Escritura de código independiente de SGBD | |
[databases/sqlalchemy] | El ORM (mapeador objeto-relacional) SqlAlchemy – un ORM permite trabajar de manera unificada con diferentes SGBD - mapeo de clases/tablas SQL – operaciones sobre las clases de imagen de las tablas SQL | |
[impots/v05] | Versión 5 de la aplicación de cálculo de impuestos – Uso de la arquitectura en capas de la versión 04 y de laORM SqlAlchemy para trabajar con los SGBD MySQL y PostgreSQL | |
[inet] | Programación de Internet – protocolo TCP / IP (Protocolo de control de transferencia / Protocolo de Internet) – protocolos HTTP (Protocolo de transferencia HyperText) – SMTP (Protocolo simple de transferencia de correo) – POP (Protocolo de oficina postal) – IMAP (Protocolo de acceso a mensajes de Internet) | |
[flask] | Servicios web con el marco de trabajo web Flask – visualización de una página HTML – servicio web jSON – solicitudes GET y POST – gestión de una sesión web | |
[impots/http-servers/01] [impots/http-clients/01] | Versión 6 del ejercicio de aplicación: creación de un servicio web jSON para el cálculo de impuestos con una arquitectura multicapa; desarrollo de un cliente web para este servidor con una arquitectura multicapa; programación cliente/servidor; uso del módulo [requests] | |
[impots/http-servers/02] [impots/http-clients/02] | Versión 7 del ejercicio de la aplicación – la versión 6 ha sido mejorada: el cliente y el servidor son multihilo – utilidades [Logger] para registrar los intercambios entre cliente y servidor – [SendMail] para enviar un correo electrónico al administrador de la aplicación | |
[impots/http-servers/03] [impots/http-clients/03] | Versión 8 del ejercicio de aplicación: la versión 7 se ha mejorado mediante el uso de una sesión web | |
[xml] | Manejo de XML (lenguaje de marcado eXtended) con el módulo [xmltodict] | |
[impots/http-servers/04] [impots/http-clients/04] | Versión 9 del ejercicio de aplicación: se modifica la versión 8 para que las comunicaciones entre cliente y servidor se realicen en XML; | |
[impots/http-servers/05] [impots/http-clients/05] | Versión 10 del ejercicio práctico: en lugar de procesar N contribuyentes mediante N solicitudes GET, se utiliza una única solicitud POST con los N contribuyentes en el cuerpo de la solicitud POST | |
[impots/http-servers/06] [impots/http-clients/06] | Versión 11 del ejercicio de aplicación: se modifica la arquitectura cliente/servidor de la aplicación; la capa [métier] pasa del servidor al cliente | |
[impots/http-servers/07] | Versión 12 del ejercicio de aplicación: esta versión implementa un servidor MVC (Modelo – Vista – Controller) que entrega indistintamente, a petición del cliente, jSON, XML y HTML. Este capítulo implementa las versiones jSON y XML del servidor | |
[impots/http-clients/07] | Implementación de los clientes jSON y XML del servidor MVC de la versión 12 | |
[impots/http-servers/07] | Implementación del servidor HTML de la versión 12 – uso del marco de trabajo CSS Bootstrap – | |
[impots/http-servers/08] | Versión 13 del ejercicio práctico: refactorización del código de la versión 12 – gestión de la sesión con el módulo [flask_session] y un servidor Redis – uso de contraseñas cifradas | |
[impots/http-servers/09] [impots/http-clients/09] | Versión 14 del ejercicio práctico: implementación de URL con un token CSRF (Cross Site Request Forgery) | |
[impots/http-servers/10] | Versión 15 del ejercicio práctico: refactorización del código de la versión 14 para manejar dos tipos de acciones: ASV (Acción Mostrar Vista), que solo sirven para mostrar una vista sin modificar el estado del servidor, ADS (Acción «Do Something»), que realizan una acción que modifica el estado del servidor; todas estas acciones terminan con una redirección a una acción ASV; esto permite gestionar correctamente las actualizaciones de página del navegador del cliente | |
[impots/http-servers/11] | Versión 16 de la aplicación: gestión de URL con prefijo | |
[impots/http-servers/12] | Versión 17 de la aplicación: migración de la versión 16 a un servidor Apache / Windows | |
[impots/http-servers/13] | Versión 18 de la aplicación: corrige una anomalía de la versión 17 |
La versión final del ejercicio de aplicación es una aplicación cliente/servidor para el cálculo de impuestos con la siguiente arquitectura:

La capa [web] mencionada anteriormente se implementa con una arquitectura MVC:

El contenido del documento es denso. El lector que llegue hasta el final obtendrá una buena visión de la programación web MVC en Python/Flask y, además, una buena visión de la programación web MVC en otros lenguajes.
El lector que prefiera ver el código, probarlo y modificarlo en lugar de leer un curso podrá hacerlo de la siguiente manera:
-
instalar un entorno de trabajo:
- un intérprete de Python;
- la comunidad IDE PyCharm;
- Laragon (servidor Apache, SGBD MySQL, servidor Redis);
- el SGBD PostgreSQL;
- el cliente HTTP Postman;
- el servidor de correo hMailServer;
-
explora el código de los ejemplos |https://tahe.developpez.com/tutoriels-cours/python-flask-2020/documents/python-flask-2020.rar|:
- en cada carpeta hay un archivo [README.md] que vincula la carpeta con un capítulo del curso y resume su contenido:

El archivo [README.md] se ve así:

Es poco probable que el lector lea todo el curso:
- el lector principiante podrá leer los capítulos del 1 al 15 y detenerse ahí. Luego podrá dedicar tiempo a programar sus propios scripts en Python antes de regresar a este curso;
- el lector que tenga conocimientos básicos de Python y quiera iniciarse en las bases de datos y en el ORM (mapeador objeto-relacional) [sqlalchemy] podrá limitarse a los capítulos 16 a 20;
- el lector que desee iniciarse en la programación web (HTTP, SMTP, POP3, IMAP) podrá leer el capítulo 21. Este capítulo es bastante complejo y presenta scripts avanzados. Se puede leer en dos niveles:
- para conocer los protocolos de Internet;
- para obtener scripts que aprovechan estos protocolos;
- el lector que cuente con conocimientos básicos de Python y desee iniciarse en la programación web con el marco de trabajo Flask podrá leer el capítulo 22;
- el lector que desee profundizar en la programación web con el marco Flask podrá estudiar los capítulos 23 al 38. En ellos se construyen aplicaciones cliente/servidor cada vez más complejas, así como una aplicación HTML/Python siguiendo el modelo de desarrollo MVC (Modelo – Vista – Controlador). Esta aplicación se desarrolla en el capítulo 32. Se puede detener aquí. Los capítulos siguientes presentan modificaciones no fundamentales;
Serge Tahé, septiembre de 2020