Salta al contenuto principale

Deep Signal

ENGINEERING

Python Core

Dalle Fondamenta ad asyncio

Python Core è il primo corso corso della collana DEEP SIGNAL. Costruisce una conoscenza rigorosa del linguaggio necessaria per affrontare i corsi successivi di AI Systems Engineering.

Il corso segue direttamente il Python Language Reference e il Python Data Model. I costrutti non vengono presentati come ricette da applicare, ma attraverso i meccanismi che ne spiegano il comportamento a runtime.

Il percorso conduce progressivamente dal modello di esecuzione del linguaggio fino a typing, Pydantic v2 e programmazione concorrente e asincrona con asyncio.

Python Core non prepara a usare un framework. Prepara a comprendere e costruire sistemi.

Fino al 15 ottobre 2026 acquista il corso a 69€ invece di 129€.

Il Python professionale, dalle fondamenta ad asyncio

Riferimenti

  • Python 3.14
  • Python Language Reference
  • Python Data Model
  • Pydantic v2
  • uv package manager

Struttura

  • 3 Parti
  • 21 Sezioni
  • 183 Lezioni
  • 21 Missioni applicative a bordo dell’Andromeda

PROGRAMMA DEL CORSO

PARTE I — IL LINGUAGGIO PYTHON

SEZIONE 0 — BENVENUTO A BORDO

  • 0.1 Benvenuto a bordo

  • 0.2 Programma e codice sorgente

  • 0.3 L’interprete Python

  • 0.4 Installare Python

  • 0.5 Installare VS Code

  • 0.6 Il terminale

  • 0.7 uv — package & project manager

  • 0.8 Creare un progetto con uv

  • 0.9 Anatomia del progetto

  • 0.10 Il REPL

  • 0.11 Eseguire un file Python

  • 0.12 Il primo output

  • 0.13 I commenti

  • 0.14 Righe fisiche e righe logiche

  • MISSIONE 0 — Postazione operativa

SEZIONE 1 — OGGETTI, IDENTITÀ E VALORE

  • 1.1 Tutto è un oggetto

  • 1.2 Funzioni e operatori

  • 1.3 L’identità di un oggetto

  • 1.4 Il tipo di un oggetto

  • 1.5 Il valore di un oggetto

  • 1.6 Oggetti mutabili e immutabili

  • 1.7 Identità e uguaglianza

  • 1.8 None — l’oggetto dell’assenza

  • MISSIONE 1 — Ispezione degli oggetti

SEZIONE 2 — NOMI E BINDING

  • 2.1 Il nome — un riferimento a un oggetto

  • 2.2 Formare un nome valido

  • 2.3 L’assegnazione come binding

  • 2.4 Rebinding — riassegnare un nome

  • 2.5 Aliasing

  • 2.6 del — sciogliere un binding

  • MISSIONE 2 — Nomi e riferimenti

SEZIONE 3 — LITERAL E TIPI SCALARI

  • 3.1 Il literal

  • 3.2 Gli interi — int

  • 3.3 I numeri in virgola mobile — float

  • 3.4 I booleani — bool

  • 3.5 Le stringhe — str

  • 3.6 I byte — bytes

  • 3.7 Conversioni esplicite tra tipi

  • 3.8 Tipi scalari e immutabilità

  • MISSIONE 3 — Telemetria scalare

SEZIONE 4 — ESPRESSIONI

  • 4.1 L’espressione

  • 4.2 Attributo

  • 4.3 Gli operatori aritmetici

  • 4.4 La precedenza degli operatori

  • 4.5 Gli operatori di confronto

  • 4.6 Gli operatori booleani

  • 4.7 La valutazione short-circuit

  • 4.8 Truthiness

  • 4.9 Le f-string — incorporare espressioni nel testo

  • MISSIONE 4 — Valutazione

SEZIONE 5 — STRUTTURE DATI

  • 5.1 La lista — list

  • 5.2 L’indicizzazione

  • 5.3 Lo slicing

  • 5.4 Il metodo

  • 5.5 Mutare una lista

  • 5.6 Aliasing e oggetti mutabili

  • 5.7 La tupla

  • 5.8 L’unpacking di una sequenza

  • 5.9 * nell’unpacking

  • 5.10 Il dizionario

  • 5.11 Accedere a un dizionario

  • 5.12 Mutare un dizionario

  • 5.13 ** — unpacking di dizionari

  • 5.14 Gli operatori di appartenenza

  • 5.15 L’insieme — set

  • MISSIONE 5 — Registro strutturato

SEZIONE 6 — IL PROTOCOLLO DI ITERAZIONE

  • 6.1 Attraversare una collezione — l’iterabile e l’iteratore, due ruoli distinti

  • 6.2 iter — ottenere un iteratore da un iterabile

  • 6.3 next — chiedere l’elemento successivo

  • 6.4 StopIteration — il segnale di fine sequenza

  • 6.5 L’iteratore si consuma una volta sola — ed è a sua volta un iterabile

  • 6.6 La valutazione lazy — produrre soltanto ciò che viene richiesto

  • MISSIONE 6 — Attraversamento manuale

SEZIONE 7 — STATEMENT E CONTROLLO DEL FLUSSO

  • 7.1 Programmazione strutturata

  • 7.2 Lo statement

  • 7.3 Lo statement composto

  • 7.4 if / elif / else

  • 7.5 L’espressione condizionale

  • 7.6 while

  • 7.7 for

  • 7.8 range

  • 7.9 break e continue

  • 7.10 L’assegnazione aumentata

  • 7.11 L’espressione di assegnazione

  • 7.12 match — la selezione strutturale

  • MISSIONE 7 — Diagnostica ambientale

SEZIONE 8 — FUNZIONI

  • 8.1 Le tre dimensioni di una funzione

  • 8.2 def — definire una funzione

  • 8.3 Parametri e argomenti

  • 8.4 Lo statement return

  • 8.5 Argomenti posizionali e per parola chiave

  • 8.6 Valori di default

  • 8.7 *args e **kwargs

  • 8.8 Unpacking degli argomenti nelle chiamate

  • 8.9 La funzione è un oggetto

  • 8.10 lambda

  • MISSIONE 8 — Analisi della telemetria

SEZIONE 9 — IL MODELLO DI ESECUZIONE: BINDING, SCOPE E CLOSURE

  • 9.1 Code block e frame di esecuzione

  • 9.2 Scope locale e scope globale

  • 9.3 La funzione annidata e lo scope enclosing

  • 9.4 La regola LEGB

  • 9.5 global e nonlocal

  • 9.6 La closure

  • 9.7 Le comprehension

  • 9.8 La comprehension ha un proprio scope

  • MISSIONE 9 — Sorveglianza del Core

SEZIONE 10 — GENERATORI

  • 10.1 La funzione generatrice

  • 10.2 L’oggetto generatore

  • 10.3 Sospensione e ripresa

  • 10.4 La generator expression

  • 10.5 yield from

  • MISSIONE 10 — Flusso telemetrico a richiesta

SEZIONE 11 — IL SISTEMA DI IMPORT

  • 11.1 Il modulo

  • 11.2 Importare un modulo

  • 11.3 Importare un nome dal modulo

  • 11.4 Il package

  • 11.5 __name__ e __main__

  • MISSIONE 11 — Il sottosistema dei materiali

SEZIONE 12 — CLASSI E ISTANZE

  • 12.1 La classe

  • 12.2 L’istanza

  • 12.3 I data attribute di istanza

  • 12.4 Gli attributi di classe

  • 12.5 I metodi di istanza

  • 12.6 Il bound method

  • 12.7 Il metodo __init__

  • 12.8 L’ereditarietà

  • 12.9 Override e super()

  • MISSIONE 12 — La consegna

SEZIONE 13 — I METODI SPECIALI

  • 13.1 Il metodo speciale

  • 13.2 __repr__ e __str__

  • 13.3 __eq__

  • 13.4 __hash__

  • 13.5 __len__ e __bool__

  • 13.6 __getitem__

  • 13.7 __contains__

  • 13.8 __iter__ e __next__

  • MISSIONE 13 — Il kit di riparazione

SEZIONE 14 — ECCEZIONI

  • 14.1 L’eccezione

  • 14.2 raise

  • 14.3 try / except

  • 14.4 Cattura per classi derivate

  • 14.5 finally

  • 14.6 Definire una propria eccezione

  • 14.7 Propagare e concatenare

  • 14.8 StopIteration, rivisto

  • MISSIONE 14 — Conservare la causa

SEZIONE 15 — CONTEXT MANAGER, DECORATORI E CALLABLE OBJECT

  • 15.1 Il rilascio della risorsa

  • 15.2 Lo statement with

  • 15.3 I metodi speciali __enter__ e __exit__

  • 15.4 Il ritorno di __exit__

  • 15.5 Context manager multipli

  • 15.6 Il decoratore

  • 15.7 Il wrapper

  • 15.8 Gli attributi speciali __name__ e __doc__

  • 15.9 Il metodo speciale __call__

  • MISSIONE 15 — Il lotto temporaneo

SEZIONE 16 — LE ANNOTAZIONI

  • 16.1 L’annotazione

  • 16.2 La firma annotata

  • 16.3 I tipi generici

  • 16.4 L’unione

  • 16.5 Lo statement type

  • 16.6 La valutazione differita

  • 16.7 __annotations__

  • MISSIONE 16 — Il contratto annotato

PARTE II — PYDANTIC V2

SEZIONE 17 — MODELLI E VALIDAZIONE CON PYDANTIC V2

  • 17.1 Il confine dei dati

  • 17.2 BaseModel

  • 17.3 La validazione del modello

  • 17.4 Conversione e modalità strict

  • 17.5 ValidationError

  • 17.6 Campi obbligatori e valori di default

  • 17.7 Field

  • 17.8 Modelli annidati

  • 17.9 Unioni discriminate

  • 17.10 Validare un campo con AfterValidator

  • 17.11 Il decoratore model_validator

  • 17.12 model_validate e model_dump

  • 17.13 JSON e JSON Schema

  • 17.14 La classe TypeAdapter

  • MISSIONE 17 — Il piano di coltivazione

PARTE III — ASYNCIO

SEZIONE 18 — IL MODELLO ASINCRONO

  • 18.1 asyncio e ANSOC

  • 18.2 Processo e thread

  • 18.3 Concorrenza e parallelismo

  • 18.4 Scheduler e multitasking

  • 18.5 CPU-bound e I/O-bound

  • 18.6 Il multitasking cooperativo

  • 18.7 I/O bloccante e non bloccante

  • 18.8 Quando una risorsa diventa pronta

  • 18.9 L’event loop

  • 18.10 La coroutine

  • 18.11 async def e l’oggetto coroutine

  • 18.12 Awaitable e __await__()

  • 18.13 La parola chiave await

  • 18.14 asyncio.run()

  • MISSIONE 18 — Una rilevazione da completare

SEZIONE 19 — TASK E CONCORRENZA STRUTTURATA

  • 19.1 Dalla coroutine al task

  • 19.2 Concorrenza strutturata e TaskGroup

  • 19.3 ExceptionGroup ed except*

  • 19.4 La cancellazione cooperativa

  • 19.5 CancelledError e finally

  • 19.6 asyncio.timeout

  • MISSIONE 19 — Ping alla sonda

SEZIONE 20 — PROTOCOLLI E STRUMENTI ASINCRONI

  • 20.1 Lo statement async with

  • 20.2 Lo statement async for

  • 20.3 Il codice bloccante e asyncio.to_thread

  • 20.4 Il ciclo di vita di un componente asincrono

  • 20.5 Errori tipici nel codice asincrono

  • MISSIONE 20 — Trova il problema

CONCLUSIONE

  • Hai completato Python Core