Recordatorios importantes sobre el lenguaje
- Asignación por referencia y tipo de datos modificables, no modificables (mutable).
- Trasladar argumentos, valores predeterminados y variables locales.
- Variables de clase y de instancias.
- Cortes y estructuras de datos avanzadas.
- Introspección.
- Elementos avanzados de las estructuras de control: la cláusula else de las instrucciones for, while, try/except.
Trabajo práctico
Optimización: intersección de listas y cálculo de la complejidad de algoritmos.
Funciones avanzadas
- Uso avanzado de decoradores (desde la generación hasta el consumo, pasando por la cadena de consumidores).
- Decoradores y patrones de diseño.
- Cierre/closure.
Trabajo práctico
Encadenamiento de consumidores de datos. Suscripción a eventos a través de los decoradores.
Programación orientada a objetos avanzada
- Las propiedades (property).
- Los iteradores.
- La herencia múltiple y sus inconvenientes.
- Gestores de contexto (Context Managers).
- Clases y métodos abstractos (ABC).
- Metaclases.
Trabajo práctico
Implementación de una metaclase para crear clases singleton.
Despliegue y calidad
- Instalación de bibliotecas de terceros (pip, easy_install).
- El índice de paquetes de Python (PyPI).
- Empaquetar sus bibliotecas (distutils, setuptools).
- Despliegue de un entorno independiente (virtualenv y buildout).
Trabajo práctico
Empaquetar una biblioteca y colocarla en PypI.
Paralelismo: optimización del rendimiento de sus programas
- Perfile sus programas con Timeit y cProfile.
- Paralelismo: evite el multihilo y apueste por el multiprocesamiento.
- Computación distribuida con la biblioteca Celery.
Trabajo práctico
Distribuir y consolidar (Map Reduce) los cálculos con Celery.
Las bibliotecas contribuyen al éxito del lenguaje
- Computación científica y estadística con Numpy, Scipy, Matplotlib y Pandas.
- Inteligencia artificial y algoritmos de aprendizaje con Scikit-Learn.
- Búsqueda de información en archivos XML con ElementTree.
- Redes: retransmisión tcp con Twisted y supervisión SNMP con PySNMP.
Trabajo práctico
Extracción de información en archivos de registro XML, filtros y estadísticas sobre los datos recopilados y representación de las tendencias de la información mediante gráficos.