Cos'è Python? Programmazione potente e intuitiva

Risalente al 1991, il linguaggio di programmazione Python era considerato un riempitivo, un modo per scrivere script che "automatizzano le cose noiose" (come diceva un popolare libro sull'apprendimento di Python) o per prototipare rapidamente applicazioni che saranno implementate in altri linguaggi .

Tuttavia, negli ultimi anni, Python è emerso come un cittadino di prima classe nello sviluppo di software moderno, nella gestione dell'infrastruttura e nell'analisi dei dati. Non è più un linguaggio di utilità dietro le quinte, ma una forza importante nella creazione di applicazioni web e nella gestione dei sistemi e un fattore chiave dell'esplosione dell'analisi dei big data e dell'intelligenza artificiale.

Video correlato: come Python semplifica la programmazione

Perfetto per l'IT, Python semplifica molti tipi di lavoro, dall'automazione del sistema al lavoro in campi all'avanguardia come l'apprendimento automatico.

I principali vantaggi di Python 

Il successo di Python ruota attorno a diversi vantaggi che offre sia ai principianti che agli esperti.

Python è facile da imparare e da usare

Il numero di funzionalità nella lingua stessa è modesto e richiede un investimento di tempo o impegno relativamente ridotto per produrre i primi programmi. La sintassi Python è progettata per essere leggibile e semplice. Questa semplicità rende Python un linguaggio di insegnamento ideale e consente ai nuovi arrivati ​​di prenderlo rapidamente. Di conseguenza, gli sviluppatori trascorrono più tempo a pensare al problema che stanno cercando di risolvere e meno tempo a pensare alle complessità del linguaggio oa decifrare il codice lasciato da altri.

Python è ampiamente adottato e supportato

Python è sia popolare che ampiamente utilizzato, come attestano le alte classifiche in sondaggi come l'indice Tiobe e il gran numero di progetti GitHub che utilizzano Python. Python funziona su tutti i principali sistemi operativi e piattaforme, e anche su quelli minori. Molte delle principali librerie e servizi basati su API hanno binding o wrapper Python, che consentono a Python di interfacciarsi liberamente con quei servizi o utilizzare direttamente tali librerie. 

Python non è un linguaggio "giocattolo"

Anche se lo scripting e l'automazione coprono una gran parte dei casi d'uso di Python (ne parleremo più avanti), Python viene anche utilizzato per creare software di qualità professionale, sia come applicazioni autonome che come servizi web. Python potrebbe non essere il linguaggio più veloce , ma ciò che gli manca in velocità, compensa la versatilità.

Python continua ad andare avanti

Ogni revisione del linguaggio Python aggiunge nuove utili funzionalità per tenere il passo con le moderne pratiche di sviluppo software. Le operazioni asincrone e le coroutine, ad esempio, sono ora parti standard del linguaggio, rendendo più semplice la scrittura di app Python che eseguono l'elaborazione simultanea.

A cosa serve Python

Il caso d'uso più basilare per Python è come linguaggio di scripting e automazione. Python non è solo un sostituto per script di shell o file batch; viene anche utilizzato per automatizzare le interazioni con i browser Web o le GUI delle applicazioni o per eseguire il provisioning e la configurazione del sistema in strumenti come Ansible e Salt. Ma lo scripting e l'automazione rappresentano solo la punta dell'iceberg con Python.

G enerale application programming con Python

È possibile creare applicazioni GUI da riga di comando e multipiattaforma con Python e distribuirle come eseguibili autonomi. Python non ha la capacità nativa di generare un file binario autonomo da uno script, ma per farlo è possibile utilizzare pacchetti di terze parti come cx_Freeze e PyInstaller.

Data science e machine learning con Python

L'analisi dei dati sofisticata è diventata una delle aree IT in rapida evoluzione e uno dei casi d'uso principali di Python. La stragrande maggioranza delle librerie utilizzate per la scienza dei dati o l'apprendimento automatico ha interfacce Python, rendendo il linguaggio l'interfaccia di comando di alto livello più popolare per le librerie di apprendimento automatico e altri algoritmi numerici.

Servizi Web e API RESTful in Python

Le librerie native di Python e i framework Web di terze parti forniscono modi rapidi e convenienti per creare qualsiasi cosa, dalle semplici API REST in poche righe di codice a siti completi e basati sui dati. Le ultime versioni di Python hanno un forte supporto per le operazioni asincrone, consentendo ai siti di gestire decine di migliaia di richieste al secondo con le librerie giuste.

Metaprogrammazione e generazione di codice in Python

In Python, tutto nel linguaggio è un oggetto, inclusi i moduli e le librerie Python stesse. Ciò consente a Python di funzionare come un generatore di codice altamente efficiente, rendendo possibile la scrittura di applicazioni che manipolano le proprie funzioni e hanno il tipo di estensibilità che sarebbe difficile o impossibile da ottenere in altri linguaggi.

Python può anche essere utilizzato per guidare i sistemi di generazione del codice, come LLVM, per creare in modo efficiente codice in altri linguaggi.

"Codice colla" in Python

Python è spesso descritto come un "linguaggio collante", nel senso che può consentire l'interoperabilità di codice disparato (in genere librerie con interfacce in linguaggio C). Il suo utilizzo nella scienza dei dati e nell'apprendimento automatico è in questa direzione, ma questa è solo un'incarnazione dell'idea generale. Se disponi di applicazioni o domini di programma che desideri collegare, ma non riesci a parlare direttamente tra loro, puoi utilizzare Python per collegarli.

Dove Python non è all'altezza

Vale anche la pena notare il tipo di attività per cui Python non è adatto.

Python è un linguaggio di alto livello, quindi non è adatto per la programmazione a livello di sistema: i driver di dispositivo oi kernel del sistema operativo sono fuori dal quadro.

Inoltre, non è l'ideale per le situazioni che richiedono file binari autonomi multipiattaforma . Potresti creare un'app Python autonoma per Windows, MacOS e Linux, ma non in modo elegante o semplice.

Infine, Python non è la scelta migliore quando la velocità è una priorità assoluta in ogni aspetto dell'applicazione. Per questo, stai meglio con C / C ++ o un altro linguaggio di quel calibro.

Come Python semplifica la programmazione

La sintassi di Python è pensata per essere leggibile e pulita, con poche pretese. Un "ciao mondo" standard in Python 3.x non è altro che:

print ("Hello world!")

Python fornisce molti elementi sintattici per esprimere in modo conciso molti flussi di programmi comuni. Considera un programma di esempio per leggere le righe da un file di testo in un oggetto elenco, eliminando ogni riga del suo carattere di fine riga lungo il percorso:

con open ('myfile.txt') come my_file:

    file_lines = [x.rstrip ('\ n') for x in my_file]

La with/ascostruzione è un gestore di contesto , che fornisce un modo efficiente per istanziare un oggetto per un blocco di codice e quindi eliminarlo al di fuori di quel blocco. In questo caso, l'oggetto viene my_fileistanziato con la open() funzione. Questo prende il posto di diverse righe di boilerplate per aprire il file, leggere singole righe da esso, quindi chiuderlo.

La [x … for x in my_file]costruzione è un'altra idiosincrasia di Python, la comprensione delle liste . Consente di iterare un elemento che contiene altri elementi (qui my_filee le righe che contiene) e consente di xelaborare ogni elemento iterato (cioè ciascuno ) e di aggiungerlo automaticamente a un elenco.

Si potrebbe scrivere una cosa simile come un formale for… ciclo in Python, proprio come si farebbe in un'altra lingua. Il punto è che Python ha un modo per esprimere economicamente cose come i cicli che iterano su più oggetti ed eseguono una semplice operazione su ogni elemento nel ciclo, o per lavorare con cose che richiedono un'istanza e uno smaltimento espliciti.

Costruzioni come questa consentono agli sviluppatori Python di bilanciare lacune e leggibilità.

Le altre funzionalità del linguaggio di Python sono pensate per integrare i casi d'uso comuni. La maggior parte dei tipi di oggetti moderni, ad esempio stringhe Unicode, sono incorporati direttamente nel linguaggio. Le strutture dati, come elenchi, dizionari (cioè hashmap o archivi di valori-chiave), tuple (per archiviare raccolte di oggetti immutabili) e set (per archiviare raccolte di oggetti univoci), sono disponibili come elementi standard.

Python 2 contro Python 3

Python è disponibile in due versioni, abbastanza diverse da far inciampare molti nuovi utenti. Python 2.x, il vecchio ramo "legacy", continuerà a essere supportato (cioè a ricevere aggiornamenti ufficiali) fino al 2020, e potrebbe persistere in modo non ufficiale dopo di ciò. Python 3.x, l'attuale e futura incarnazione del linguaggio, ha molte caratteristiche utili e importanti che non si trovano in Python 2.x, come nuove funzionalità di sintassi (ad esempio, l '"operatore tricheco"), migliori controlli di concorrenza e un altro interprete efficiente.

L'adozione di Python 3 è stata rallentata per molto tempo dalla relativa mancanza di supporto per le librerie di terze parti. Molte librerie Python supportano solo Python 2, rendendo difficile il cambio. Ma negli ultimi due anni, il numero di librerie che supportano solo Python 2 è diminuito; tutte le librerie più popolari sono ora compatibili sia con Python 2 che con Python 3. Oggi, Python 3 è la scelta migliore per i nuovi progetti; non c'è motivo di scegliere Python 2 a meno che tu non abbia scelta. Se sei bloccato con Python 2, hai varie strategie a tua disposizione.

Le librerie di Python

Il successo di Python si basa su un ricco ecosistema di software di prima e terza parte. Python beneficia sia di una solida libreria standard che di un ampio assortimento di librerie facilmente ottenibili e prontamente utilizzate da sviluppatori di terze parti. Python è stato arricchito da decenni di espansione e contributo.

La libreria standard di Python fornisce moduli per attività di programmazione comuni: matematica, gestione di stringhe, accesso a file e directory, rete, operazioni asincrone, threading, gestione multiprocesso e così via. Ma include anche moduli che gestiscono attività di programmazione comuni di alto livello richieste dalle applicazioni moderne: lettura e scrittura di formati di file strutturati come JSON e XML, manipolazione di file compressi, utilizzo di protocolli Internet e formati di dati (pagine web, URL, e-mail). La maggior parte del codice esterno che espone un'interfaccia di funzione esterna compatibile con C è accessibile con il ctypesmodulo di Python .

La distribuzione Python predefinita fornisce anche una libreria GUI rudimentale, ma utile, multipiattaforma tramite Tkinter e una copia incorporata del database SQLite 3.

Le migliaia di librerie di terze parti, disponibili tramite Python Package Index (PyPI), costituiscono la vetrina più forte per la popolarità e la versatilità di Python.

Per esempio:

  • La libreria BeautifulSoup fornisce una cassetta degli attrezzi all-in-one per estrarre HTML, anche HTML complicato e non funzionante, ed estrarre dati da esso.
  • Le richieste rendono il lavoro con le richieste HTTP su larga scala indolore e semplice.
  • Framework come Flask e Django consentono un rapido sviluppo di servizi web che comprendono casi d'uso sia semplici che avanzati.
  • È possibile gestire più servizi cloud tramite il modello a oggetti di Python utilizzando Apache Libcloud.
  • NumPy, Pandas e Matplotlib accelerano le operazioni matematiche e statistiche e semplificano la creazione di visualizzazioni dei dati.

I compromessi di Python

Come C #, Java e Go, Python ha una gestione della memoria raccolta dai rifiuti, il che significa che il programmatore non deve implementare codice per tenere traccia e rilasciare oggetti. Normalmente, la garbage collection viene eseguita automaticamente in background, ma se ciò pone un problema di prestazioni, è possibile attivarla manualmente o disabilitarla completamente, oppure dichiarare intere aree di oggetti esenti dalla garbage collection come miglioramento delle prestazioni.

Un aspetto importante di Python è il suo dinamismo . Tutto nel linguaggio, comprese le funzioni e i moduli stessi, vengono gestiti come oggetti. Ciò va a scapito della velocità (ne parleremo più avanti), ma rende molto più semplice scrivere codice di alto livello. Gli sviluppatori possono eseguire complesse manipolazioni di oggetti con poche istruzioni e persino trattare parti di un'applicazione come astrazioni che possono essere modificate se necessario.

L'uso di Python di spazi bianchi significativi è stato citato come uno degli attributi migliori e peggiori di Python. Il rientro sulla seconda riga sotto non è solo per la leggibilità; fa parte della sintassi di Python. Gli interpreti Python rifiuteranno i programmi che non utilizzano il rientro appropriato per indicare il flusso di controllo.

con open ('myfile.txt') come my_file:

    file_lines = [x.rstrip ('\ n') for x in my_file]

Lo spazio bianco sintattico potrebbe far arricciare il naso e alcune persone rifiutano Python per questo motivo. Ma le rigide regole di indentazione sono molto meno invadenti nella pratica di quanto potrebbero sembrare in teoria, anche con il più minimale degli editor di codice, e il risultato è un codice più pulito e più leggibile.

Un'altra potenziale svolta, soprattutto per chi proviene da linguaggi come C o Java, è il modo in cui Python gestisce la digitazione delle variabili. Per impostazione predefinita, Python utilizza la digitazione dinamica o "duck", ottima per la codifica rapida, ma potenzialmente problematica in grandi basi di codice. Detto questo, Python ha recentemente aggiunto il supporto per i suggerimenti sul tipo in fase di compilazione, quindi i progetti che potrebbero trarre vantaggio dalla digitazione statica possono usarlo.

Python è lento? Non necessariamente

Un avvertimento comune su Python è che è lento. Oggettivamente, è vero. I programmi Python generalmente vengono eseguiti molto più lentamente dei programmi corrispondenti in C / C ++ o Java. Alcuni programmi Python saranno più lenti di un ordine di grandezza o più.