.. _prog-detalle: Programa Detallado ================== :Autor: Juan Fiol :Version: Revision: 2025 :Copyright: Libre :ref:`Clase 1 `: Introducción al lenguaje --------------------------------------------------- * Cómo empezar: Instalación y uso * Instalación * Edición de código * Documentación y ayudas * Uso de Python: Interactivo o no * Notebooks de Jupyter o Jupyter-Lab * Instalando Python interactivo * Comandos de Jupyter (o IPython) * Comandos de Navegación * Algunos de los comandos mágicos * Comandos de Shell * Ambientes * Gestionando ambientes con ``conda`` * Ambientes y Notebooks * Compartiendo ambientes * Conceptos básicos de Python * Características generales del lenguaje * Tipos de variables :ref:`Clase 2 `: Modularización y tipos compuestos ------------------------------------------------------------ * Modularización y encapsulado * Definición básica de funciones * Módulos * Módulo math * Módulo ``cmath`` * Tipos simples: Números * Tipos compuestos * Strings: Secuencias de caracteres * Operaciones * Iteración y Métodos de Strings * Formato de strings * Conversión de tipos * Tipos contenedores * Listas * Tuplas * Rangos :ref:`Clase 3 `: Tipos complejos y control de flujo ------------------------------------------------------------- * Listas * Operaciones sobre listas * Funciones que aplican sobre listas * Control de flujo * if/elif/else * Iteraciones * Múltiples condiciones * Diccionarios * Creación de diccionarios * Selección de elementos * Acceso a claves y valores * Modificación o adición de campos * Conjuntos * Operaciones entre conjuntos * Modificar conjuntos :ref:`Clase 4 `: Funciones ------------------------------------ * Las funciones son objetos * Definición básica de funciones * Funciones con argumentos opcionales * Número variable de argumentos y argumentos *keywords* * Argumentos de las funciones * Ámbito de las variables en los argumentos * Tipos mutables en argumentos opcionales * Anotaciones de tipos * Funciones * El tipo ``Union`` * El tipo ``Optional`` * Control de tipos estáticos * ``MyPy`` y notebooks :ref:`Clase 5 `: Más características de Funciones ----------------------------------------------------------- * Empacar y desempacar argumentos * Funciones que devuelven funciones * Ejemplo: Polinomio interpolador * Funciones que toman como argumento una función * Aplicacion: Ordenamiento de listas * Funciones anónimas * Ejemplo: Integración numérica * Uso de funciones anónimas * Funciones y decoradores * Funciones que aceptan y devuelven funciones (Decoradores) * Decoradores, un ejemplo más útil * Programación funcional con Python * Los errores al programar * Los errores en notebooks * Mutabilidad * Funciones * Inmutabilidad * No más loops :ref:`Clase 6 `: Objetos y administración de errores -------------------------------------------------------------- * Atrapar y administrar errores * Administración de excepciones * “Crear” excepciones * Programación Orientada a Objetos * Breve introducción a Programación Orientada a Objetos * Clases y Objetos * Herencia * Atributos de clases y de instancias * Algunos métodos “especiales” * Método ``__del__()`` * Métodos ``__str__`` y ``__repr__`` * Método ``__call__`` * Métodos ``__add__``, ``__mul__`` y ``__abs__`` * Comparación :ref:`Clase 7 `: Persistencia de datos y módulos de biblioteca standard --------------------------------------------------------------------------------- * Escritura y lectura a archivos * Ejemplos * Módulo Pathlib * Métodos y propiedades * Partes del *path* * Contenido de directorios * Leer un archivo * Archivos comprimidos * String, bytes y codificaciones :ref:`Clase 8 `: Más sobre objetos -------------------------------------------- * El decorador ``@classmethod`` * *Getters* y *Setters* * Función ``property`` * Más sobre herencia * ``Enum`` y ``dataclass``\ es * ``Enum``\ s * Dataclasses :ref:`Clase 9 `: Control de versiones y módulos --------------------------------------------------------- * ¿Qué es y para qué sirve el control de versiones? * Cambios en paralelo * Historia completa * Instalación * Interfaces gráficas * Documentación * Configuración básica * Creación de un nuevo repositorio * Clonación de un repositorio existente * Ver el estado actual * Creación de nuevos archivos y modificación de existentes * Actualización de un repositorio remoto * Puntos importantes * Importando módulos * Importando módulos de directorios hijos * Importando módulos desde padres o hermanos * Algunos módulos (biblioteca standard) * Módulo sys * Módulo ``os`` * Módulo ``glob`` * Módulo ``Argparse`` * Módulo ``re`` :ref:`Clase 10 `: Introducción a Numpy y Matplotlib ------------------------------------------------------------- * Introducción * Lectura y escritura de datos a archivos * Características de *arrays* en **Numpy** * Comparación de listas y *arrays* * Uso de memoria de listas y arrays * Velocidad de **Numpy** * Propiedades de **Numpy** arrays * Creación de *arrays* en **Numpy** * Creación de *Arrays* unidimensionales * Arrays multidimensionales * Generación de datos equiespaciados * Otras formas de creación * Acceso a los elementos * Operaciones sobre arrays * Operaciones básicas * Comparaciones * Funciones definidas en **Numpy** :ref:`Clase 11 `: Visualización ------------------------------------------ * Interactividad * Trabajo con ventanas emergentes * Trabajo sobre notebooks * Gráficos simples * Formato de las curvas * Líneas, símbolos y colores * Adecuación de los gráficos * Nombres de ejes y leyendas * Límites de graficación (vista) * Escalas * Líneas verticales y horizontales * Inclusión de ecuaciones * Exportar las figuras * Dos gráficos en la misma figura * Personalizando el modo de visualización * Archivo de configuración * Hojas de estilo * Modificación de parámetros dentro de programas :ref:`Clase 12 `: Más información sobre **Numpy** ----------------------------------------------------------- * Creación y operación sobre **Numpy** arrays * Funciones para crear arrays * Funciones que actúan sobre arrays * Productos entre arrays y productos vectoriales * Comparaciones entre arrays * Copias de arrays y vistas * Atributos de *arrays* * reshape * transpose * min, max * argmin, argmax * sum, prod, mean, std * cumsum, cumprod, trapz * nonzero * Conveniencias con arrays * Convertir un array a unidimensional (ravel) * Enumerate para ``ndarrays`` * Vectorización de funciones escalares * Indexado avanzado * Indexado con secuencias de índices * Índices de arrays multidimensionales * Indexado con condiciones * Función where * Extensión de las dimensiones (*Broadcasting*) * Unir (o concatenar) *arrays* * Apilamiento vertical * Apilamiento horizontal * Generación de números aleatorios * Distribución uniforme * Distribución normal (Gaussiana) * Histogramas * Distribución binomial