La clase de hoy se hará en dos apartados
El objetivo es aprender cómo se desarrolla un programa complejo en Python, utlizando los bloques de construcción que nos dan los paquetes de terceros.
También veremos un entorno de desarrollo muy visual que nos facilita crear un proyecto desde cero.
Un ejemplo sencillo: imaginemos que queremos hacer un programa para calcular las raíces de un polinomio $\sum_{i=1}^n a_ix^i = 0$. Podríamos modularizar cada parte del programa y organizar el proyecto como:
poly_calc/
main.py # El programa principal, que importa los módulos necesarios y enseña un menú
entrada.py # Módulo para pedir los coeficientes al usuario
metodos_exactos.py # Módulo con los métodos exactos (para polinomios de grado 1-4)
metodos_numericos.py # Módulo con los métodos aproximados (para polinomios de grado 5+)
from math import pi, sin, cos
print(sin(0), cos(pi/2))
# (Asumiendo la estructura de archivos de la diapositiva anterior)
# main.py
import entrada # Importar un módulo
import metodos_exactos as me # Importar un módulo con un alias
from metodos_numericos import newton_raphson # Importar una función específica
# Usemos las funciones de los módulos importados
pol = entrada.pedir_coeficientes()
if len(pol) == 3:
me.resolver_grado_3(pol)
elif len(pol) > 4:
newton_raphson(pol)
...
# Los archivos de módulo simplemente definen las funciones
# entrada.py
def pedir_coeficientes():
...
# metodos_exactos.py
def resolver_grado_3(pol):
...
# metodos_numericos.py
def newton_raphson(pol):
...
La instalación de Python cuenta, además de con el intérprete del lenguaje, con una librería estándar con funcionalidades esenciales
Algunos ejemplos de módulos de la librería estándar son:
¿Qué hacemos si necesitamos una funcionalidad que no está en la librería estándar?
🤓Dejamos de ser vagos y desarrollamos código🤓
¿Qué hacemos si necesitamos una funcionalidad que no está en la librería estándar?
🤓Dejamos de ser vagos y desarrollamos código🤓
🗿Usamos paquetes🗿
# Estos comandos se ejecutan en una terminal!
# NOTA: Si tienes varias versiones de Python instaladas,
# usar python -m pip en vez de pip
pip --version # Comprobar versión instalada
# Gestionar paquetes
pip install manim # Instalar el paquete manim
pip install --upgrade manim # Actualizar el paquete manim
pip install --uninstall manim # Desinstalar el paquete manim
Una tarea importante suele ser compartir nuestra lista de paquetes con otros desarrolladores
1. Listamos los paquetes
2. Guardamos los paquetes
3. Instalamos los paquetes
Similar a pip, pero tiene más funcionalidades y es más utilizado con paquetes matemático/científicos
Algunas diferencias con pip:
La instalación de paquetes es tan sencilla como con pip:
conda install numpy # Instalar el paquete numpy
conda update numpy # Actualizar el paquete numpy
conda remove numpy # Desinstalar el paquete numpy
conda install conda-forge::openai # Instalar el paquete openai desde conda-forge
Los entornos virtuales son una forma de aislar los paquetes de Python para que no interfieran entre sí
Esto es útil cuando trabajamos en varios proyectos que requieren versiones diferentes de los mismos paquetes
conda env list # Ver la lista de entornos
conda create -n mi_env python=3.10 # Crear un nuevo entorno
conda activate mi_env # Activar el entorno
conda deactivate # Salir del entorno
conda env remove -n mi_env # Eliminar el entorno
# Guardar el entorno en un archivo
conda env export > env.yml
# Cargar el entorno desde un archivo
conda env create -f env.yml
En la siguiente parte de la clase, abriremos vscode y nos pondremos a jugar con paquetes, veremos que podemos hacer con ellos
Pero primero, hace falta explicar que son los Jupyter Notebooks (esto es mucho menos enrevesado que lo anterior, we promise)
1. Instalamos las extensiones de vscode de Jupyter y Python
2. Creamos un nuevo fichero .ipynb dónde trabajaremos
3. Configuramos el kernel de nuestro nuevo entorno de conda
Ahora pasaremos a una clase interactiva, trabajaremos con los siguientes ficheros que podéis descargar aquí mismo: