Python - sito ufficiale della comunità italiana
Usa Python per...
- Sviluppo Web
- Bottle, Webpy, Flask, Django, Turbogears, Zope, Plone, Twisted, CGI, Socket
- Accesso ai database
- ODBC, Oracle, MySQL, PostgreSQL, SQL Server, SQLite
- Applicazioni desktop
- TkInter, wxPython, PyQt, PyGtk, GenroPy
- Giochi e grafica 3D
- PyGame, PyKyra, 3D Rendering
- Calcolo scientifico e numerico
- Bioinformatics, Physics
La AFNIC usa Python
...insieme a molti altri.
Python è un linguaggio di programmazione dinamico orientato agli oggetti utilizzabile per molti tipi di sviluppo software. Offre un forte supporto all'integrazione con altri linguaggi e programmi, è fornito di una estesa libreria standard e può essere imparato in pochi giorni. Molti programmatori Python possono confermare un sostanziale aumento di produttività e ritengono che il linguaggio incoraggi allo sviluppo di codice di qualità e manutenibilità superiori.
Python gira su Windows, Linux/Unix, Mac OS X, OS/2, Amiga, palmari Palm e cellulari Nokia; è stato anche portato sulle macchine virtuali Java e .NET.
Python è distribuito con licenza Open-Source approvata dalla OSI: il suo utilizzo è gratuito e libero anche per prodotti commerciali.
Leggi altre informazioni o prova Python ora!
Python 3.15 è qui: Le 3 novità che vi faranno dire "finalmente"
Mettetevi comodi, prende una tazza di tequila e vediamole insieme.
1. Importazioni "Lazy": Perché correre quando si può aspettare?
Avete presente quando aprite un'app da riga di comando e ci mette tre secondi di troppo prima di rispondere, solo perché all'inizio del file c'era un import pandas o un import json mai usato? Con la nuova sintassi della PEP 810 arriva la parola chiave lazy. In pratica, dite a Python: "Ehi, ti dico già cosa mi servirà, ma non caricarmelo in memoria finché non lo uso davvero."
# Ora possiamo fare così: lazy import json lazy from math import sqrtFinché non toccate json o sqrt, Python non perde tempo a caricare i moduli. È la svolta perfetta per velocizzare l'avvio di CLI, script veloci e server di sviluppo, in altre parole è stata sdoganata una po' di sana procrastinazione direttamente nel linguaggio.
2.frozendict: Il dizionario blindato che mancava
Quante volte vi è capitato di voler usare un dizionario come chiave di un altro dizionario o all'interno di un set, per poi sentirvi dire da Python: "Mi dispiace, i dict sono mutabili, niente hash!"? La soluzione storica era fare acrobazie strane con le tuple o le dataclass congelate. Con la PEP 814, Python 3.15 introduce finalmente frozendict direttamente tra i tipi integrati (built-in):
# Un dizionario a prova di bomba!
config = frozendict({"versione": 3.15, "stato": "super_cool"})
# Provate a modificarlo e vi beccate un bel TypeError:
config["versione"] = 3.16 #Impossibile
Essendo immutabile, se tutte le sue chiavi e valori sono hashable, lo diventa anche lui. Questo significa che ora potete usare frozendict come chiave dentro altri dizionari senza dover inventare la ruota ogni volta. Pulito, sicuro e stiloso.
3. Unpacking nelle Comprehension: Addio nidificazioni da incubo
Chiunque abbia scritto Python per più di due settimane si è scontrato almeno una volta con le list comprehension nidificate. Quella sintassi tipo [x for sub in lista for x in sub] che richiede due minuti di riflessione filosofica ogni volta che la si legge. Ma con la PEP 798 arriva l'operatore di unpacking (*) direttamente dentro le comprehension.
# Abbiamo una lista di tuple/liste nidificate: dati_nidificati = [(1, 2), [3, 4], (5, 6)] # Prima: sintassi da mal di testa # flat = [valore for sottolista in dati_nidificati for valore in sottolista] # Ora: magia pura flat = [*sub for sub in dati_nidificati] print(flat) # [1, 2, 3, 4, 5, 6]Funziona su liste, set, dizionari e generatori. Il codice diventa immediatamente più leggibile, sintetico ed elegante. Come si fa a non amarlo?
In conclusione Python 3.15 dimostra ancora una volta che il nostro linguaggio preferito sa come evolversi mantenendo la sua promessa storica: rendere la vita dello sviluppatore più semplice e piacevole.
E voi quale di queste tre novità non vedete l'ora di provare nei vostri progetti? Fatecelo sapere nei commenti... o anche no, sentitevi liberi.
Python 3.15: il JIT torna "on track" e punta a migliorare le performance
Secondo gli ultimi aggiornamenti ufficiali, il progetto del JIT è tornato "on track" dopo alcune difficoltà iniziali, con progressi concreti nello sviluppo e nell’integrazione con l’interprete.
L’obiettivo del JIT è quello di ottimizzare dinamicamente l’esecuzione del codice Python, compilando parti del programma in una forma più efficiente durante il runtime.
Si tratta di una tecnologia già ampiamente utilizzata in altri linguaggi come Java e JavaScript, e rappresenta uno dei passi più importanti per migliorare le performance di Python senza rinunciare alla sua semplicità.
Il lavoro sul JIT si affianca alle altre ottimizzazioni introdotte nelle versioni recenti, come l’adaptive interpreter, contribuendo a rendere Python sempre più competitivo anche in contesti dove la velocità è un fattore critico.
Python 3.15 è attualmente in fase alpha, e sarà interessante vedere come queste innovazioni evolveranno nei prossimi mesi in vista del rilascio stabile previsto per il 2026.
Se il percorso continuerà in questa direzione, il JIT potrebbe diventare uno degli elementi chiave nel futuro delle performance del linguaggio.
Python si semplifica: arrivano i frozendict e addio alle "dead batteries"
Tra le novità più interessanti emerse nelle ultime versioni troviamo due cambiamenti che, pur non facendo rumore come il JIT o il no GIL, raccontano molto bene la direzione che Python sta prendendo.
Da un lato, è stata accettata una proposta (PEP 814) per introdurre finalmente i cosiddetti "frozendict" direttamente nel linguaggio (dalla versione 3.15). Come suggerisce il nome, si tratta di dizionari immutabili, ovvero strutture dati simili ai classici dict ma che, una volta creati, non possono essere modificati. Un concetto già presente in Python con i frozenset, ma che finora mancava per i dizionari. È una funzionalità richiesta da anni, soprattutto in contesti dove l’immutabilità è importante, come nella programmazione funzionale, nella gestione delle configurazioni o come chiavi in strutture dati più complesse.
Dall'altro lato, Python sta portando avanti un lavoro meno visibile ma altrettanto importante: la rimozione delle cosiddette "dead batteries". Con questo termine si indicano moduli della standard library ormai obsoleti, poco utilizzati o mantenuti con difficoltà. Nelle versioni più recenti, in particolare Python 3.14, molti di questi componenti sono stati definitivamente rimossi. Il risultato è una libreria standard più snella, più sicura e più facile da mantenere.
Questi cambiamenti raccontano una direzione chiara: Python non sta solo aggiungendo nuove funzionalità, ma sta anche cercando di diventare un linguaggio più pulito, moderno e coerente.
Meno legacy, più chiarezza, ed è proprio per questo (o anche per questo) che dopo più di 30 anni, Python continua a restare così rilevante.
Python diventa sempre più veloce: cosa sta cambiando davvero
Dalla versione 3.11 in poi, Python ha iniziato a ricevere miglioramenti significativi in termini di performance, grazie a una serie di ottimizzazioni dell’interprete che stanno rendendo il linguaggio sempre più competitivo anche in scenari dove prima non era la scelta ideale.
Secondo i dati ufficiali del team Python, Python 3.11 ha introdotto miglioramenti medi intorno al 10-60% rispetto alla versione 3.10, grazie a un nuovo interprete più efficiente e a tecniche come l’adaptive specializing interpreter.
Le versioni successive, come 3.12, 3.13 e 3.14, hanno continuato su questa strada, lavorando su:
- ottimizzazione dell’esecuzione del bytecode
- miglior gestione della memoria
- riduzione dell’overhead nelle chiamate di funzione
- miglioramenti nelle strutture dati interne
In molti casi reali, questi interventi si traducono in applicazioni sensibilmente più rapide, senza richiedere modifiche al codice esistente.
Ma le novità più interessanti riguardano due cambiamenti strutturali molto importanti.
Il primo è il superamento del Global Interpreter Lock (GIL).
Con Python 3.13 è stato introdotto ufficialmente il supporto al cosiddetto “free-threading”, ovvero una modalità opzionale dell’interprete che permette di eseguire codice Python senza il GIL.
Questo non significa che il GIL sia sparito: la modalità tradizionale resta quella predefinita, soprattutto per garantire compatibilità con l’ecosistema esistente.
Tuttavia, il fatto che il supporto sia ora parte ufficiale del linguaggio segna un passaggio storico: Python può finalmente evolvere verso un vero parallelismo multi-thread anche nelle applicazioni CPU-bound.
Il secondo elemento chiave è l’introduzione iniziale di un JIT compiler (Just-In-Time).
Sempre a partire da Python 3.13, sono state introdotte le basi per un sistema di compilazione JIT che permette di ottimizzare dinamicamente l’esecuzione del codice.
Il JIT è una tecnologia già utilizzata in linguaggi come Java e JavaScript, e consente di tradurre parti di codice in forma più efficiente durante l’esecuzione, migliorando le performance senza interventi manuali da parte dello sviluppatore.
Anche in questo caso siamo nelle prime fasi, ma il potenziale è enorme: combinato con le altre ottimizzazioni, il JIT rappresenta uno dei tasselli fondamentali per rendere Python sempre più competitivo anche in termini di velocità pura.
In altre parole, Python non sta solo diventando più veloce, sta cambiando profondamente il modo in cui viene eseguito. E, fatemelo scrivere con un po' di orgoglio, per una volta, migliorare le performance non significa scrivere codice più complesso.
Significa semplicemente aggiornare Python.
Python domina sempre di più l’AI
Secondo diversi report sullo sviluppo software e sull’ecosistema AI, oltre il 70–80% dei progetti di machine learning utilizza Python come linguaggio principale.
Insomma: se l’AI fosse una città, Python sarebbe probabilmente il sistema di trasporto pubblico.
Perché proprio Python? La risposta è abbastanza semplice: l'ecosistema.
Negli ultimi anni si è creato un insieme di librerie e framework che rendono Python estremamente efficace per lavorare con dati e modelli di AI.
Tra i più utilizzati troviamo:
- TensorFlow
- PyTorch
- scikit-learn
- pandas
- NumPy
Queste librerie permettono di passare dall’analisi dei dati alla costruzione di modelli complessi senza cambiare linguaggio.
E questo, per ricercatori e sviluppatori, è un enorme vantaggio, anche le Big Tech puntano su Python.
Gran parte degli strumenti più importanti nel campo dell’AI sono progettati con Python come interfaccia principale.
Aziende e laboratori di ricerca lo utilizzano per:
- addestrare modelli di machine learning
- costruire pipeline di dati
- sviluppare applicazioni AI
- creare prototipi rapidamente
Ma non era “troppo lento”? Questa è una delle obiezioni più comuni.
Python non è il linguaggio più veloce, ma nel mondo dell’AI spesso la velocità viene gestita dalle librerie sottostanti, scritte in C, C++ o CUDA.
Python diventa quindi una specie di direttore d’orchestra:
- il codice Python coordina
- le librerie ottimizzate fanno il lavoro pesante
Risultato: produttività altissima senza sacrificare troppo le prestazioni.
Il futuro: Python sempre più centrale. Con l’esplosione dell’AI generativa e del machine learning applicato, Python sembra destinato a restare al centro dell’ecosistema per parecchio tempo.
Nuovi strumenti, framework e librerie continuano a nascere proprio attorno al linguaggio e se il trend continuerà così, la domanda non sarà più: "Python è usato nell’AI?" ma piuttosto "Esiste ancora AI senza Python?"
