Struttura del corso
Giorno 1 — Fondamenta robuste e strumenti per Python
Funzionalità moderne di Python e tipizzazione dinamica
- Nozioni base sulla tipizzazione, generici, Protocols e TypeGuard
- Classi dati, classi dati immutabili e panoramica su attrs
- Pattern matching (PEP 634+) e modalità di utilizzo idiomatiche<\/li>
Qualità del codice e strumenti di sviluppo
- Formattazione e linting: black, isort, flake8, ruff
- Analisi statica dei tipi tramite MyPy e pyright
- Hook pre-commit e gestione ottimizzata del flusso di lavoro dello sviluppatore
Gestione progetti e packaging
- Gestione delle dipendenze con Poetry e ambienti virtuali
- Struttura dei package, punti di ingresso e best practice nella versionamento
- Creazione ed espansione di pacchetti su PyPI o registry privati
Giorno 2 — Pattern di progettazione e pratiche architettoniche
Pattern di progettazione in Python
- Pattern creativi: Factory, Builder, Singleton (varianti tipicamente utilizzate in Python)
- Pattern strutturali: Adapter, Facade, Decorator, Proxy
- Pattern comportamentali: Strategy, Observer, Command
Principi architettonici
- Applicazione dei principi SOLID ai progetti Python
- Architetture a forma esagonale e Clean Architecture: confini logici e separazione delle responsabilità
- Pattern di iniezione delle dipendenze e gestione configurazioni
Modularità e riutilizzo del codice
- Progettazione di librerie rispetto a applicazioni veri e propri
- API stabili, interfacce ben definite e versionamento semantico
- Gestione delle configurazioni, delle chiavi segrete e delle impostazioni dipendenti dall’ambiente
Giorno 3 — Concorrenza, Async IO e ottimizzazione prestazionale
Concorrenza e parallelismo in Python
- Fondamenti della gestione dei thread e implicazioni legate al GIL
- Multiprocessing e uso di pool di processi per operazioni intensive su CPU
- Scelta tra concurrent.futures e multiprocessing a seconda del caso d’uso
Programmazione asincrona con asyncio
- Pattern async/await, ciclo di eventi e gestione delle cancellazioni
- Realizzazione di librerie asincrone e interoperabilità tra codice sincrono e asincrono
- Gestione del traffico I/O, limitazione della velocità di esecuzione e prevensione dell’overload dei servizi
Profiling e ottimizzazione delle prestazioni
- Strumenti di profiling: cProfile, pyinstrument, perf, memory_profiler
- Ottimizzazione delle porzioni più critiche del codice e uso di estensioni in C o Numba quando opportuno
- Misurazione della latenza, del throughput e dell’utilizzo delle risorse sistemiche
Giorno 4 — Testing, CI/CD, osservabilità e deployment
Strategie di testing e automazione
- Unit test e fixture in pytest; organizzazione razionale dei test
- Testing basato su proprietà con Hypothesis e test contrattuali
- Mocking, monkeypatching e testing di codice asincrono
Integrazione CI/CD, release e monitoraggio sistemico
- Integrazione dei test e controlli qualitativi nei workflow GitHub Actions o GitLab CI
- Creazione di container riproducibili con Docker tramite builds multi-stage
- Osservabilità applicativa: logging strutturato, metriche Prometheus e tracciamento distribuito
Sicurezza, rafforzamento del codice e best practice
- Audit delle dipendenze, SBOM di base e rilevamento vulnerabilità nel codice
- Pratiche di coding sicuro per la validazione degli input e gestione segreta dei dati riservati
- Rafforzamento runtime: limiti sui consumi di risorse, controllo dei diritti d’accesso e protezione dei container
Progetto finale e revisione generale
- Laboratorio di gruppo: progettazione ed implementazione di un piccolo servizio sfruttando i pattern trattati nel corso
- Sviluppo dei test, controllo tipologico, packaging e realizzazione della pipeline CI per il progetto stesso
- Riveduta finale del codice, analisi critica ed elenco di azioni concrete per il miglioramento continuo
Conclusione e prossimi passi da intraprendere
Requisiti
- Solide competenze di programmazione Python a livello intermedio
- Conoscenza della programmazione orientata agli oggetti e dei test di base
- Esperienza nell’utilizzo del terminale e di Git
Destinatari
- Sviluppatori Python senior
- Ingegneri software responsabili della qualità del codice e dell’architettura nei progetti Python
- Responsabili tecnici ed ingegneri MLOps/DevOps che lavorano con codebase Python
Recensioni (2)
tutto era perfetto
Florin Vrincianu
Corso - Python Programming Fundamentals
Traduzione automatica
Gli esercizi pratici correlati al contenuto aiutano davvero a comprendere meglio ogni argomento. Inoltre, lo stile di inizio lezione con una presentazione teorica e continuazione con esercizi pratici è buono e utile per collegare il materiale presentato inizialmente.
Nazeera Mohamad - Ministry of Science, Technology and Innovation
Corso - Introduction to Data Science and AI using Python
Traduzione automatica