I migliori strumenti per programmare con Python consigliati dal team Nephila
Non ne abbiamo mai fatto mistero: Python è il nostro linguaggio di programmazione preferito. È la nostra tecnologia di specializzazione, lo usiamo per i progetti in produzione, e ci piace per tanti motivi, alcuni dei quali puoi scoprirli visitando i nostri social.
Se ci stai leggendo ma con conosci Python, si tratta di uno dei linguaggi di programmazione più usati al mondo e tuttora in costante crescita. È un linguaggio open source di alto livello, progettato da Guido van Rossum nel 1991, ed ormai arrivato alla terza versione. Tra i punti di forza del linguaggio Python c’è sicuramente la sintassi asciutta e potente, la semplicità di apprendimento, il supporto multipiattaforma, la ricchezza di librerie con cui possono essere estese le sue funzionalità, e gli infiniti campi di applicazione in cui può essere utilizzato. È molto probabile che tu ne abbia sentito parlare nell’ambito del Machine Learning, quel settore dell’informatica specializzato nella creazione di sistemi in grado di apprendere in modo autonomo e strettamente connesso alla creazione di soluzioni di intelligenza artificiale. Python può essere applicato in tanti altri settori: la Data Science, disciplina che si occupa di analisi e visualizzazione dei dati; la Computer Vision, grazie alla quale è possibile creare sistemi di riconoscimento facciale e non solo; e ancora viene utilizzato per sviluppare videogiochi, oltre ad avere discrete applicazioni anche in campo medico (analisi dati clinici, ecc) e potremmo continuare ancora.
In Nephila, lo utilizziamo in campo sviluppo web, e nello specifico per lo sviluppo backend di applicazioni web. Python ci aiuta a gestire il lato server delle applicazioni, e quindi tutta la business logic e l'interazione con gli elementi di data storage o API esterne.
Per scoprire di cosa ci occupiamo nello specifico, puoi consultare la nostra pagina Servizi.
Quello che ci piacerebbe fare è portarti dietro le quinte del lavoro che svolgiamo ogni giorno e confrontarci con chi sviluppa codice Python come noi. Per farlo, abbiamo chiesto al nostro team di sviluppo backend quali sono gli strumenti di cui non possono fare a meno per programmare in Python e perché li consiglia.
Quindi, ecco la nostra lista. Buona lettura!
I tool di cui ti parleremo:
pre-commit
pre-commit è un tool che semplifica di gran lunga la formattazione del codice PRIMA di fare un commit. Non ti permette di creare un commit a meno che non vengano rispettate determinate regole e determinati check sul codice - che decidi tu - e quindi il tuo codice viene pushato sul repository solo quando è formattato come vuoi (eviti quindi di far girare la CI “a vuoto”). È utilissimo in quanto automatizza una parte noiosa del lavoro, e fa risparmiare un sacco di tempo (e risorse). - Consigliato da Leonardo
pre-commit è uno strumento che permette di configurare vari hooks da eseguire prima di effettuare un commit su GIT. Lo trovo davvero utile perché aiuta a scrivere codice che rispetti determinate linee guida (ad esempio, la style guide di Python, PEP) e a mantenere il codice consistente. - Consigliato da Lorenzo
pre-commit è uno strumento utile per semplificare il linting e la formattazione del codice Python prima che sia effettivamente committato (ovvero, aggiornato con le sue modifiche nel repository). Il suo utilizzo evita di sprecare sia risorse delle pipeline CI/CD, sia tempo per la revisione dello stile del codice che deve rispettare determinate linee guida. Per molto tempo mi sono affidato alla semplice esecuzione di tox in locale, che era efficace ma noiosa; poi ho deciso di leggere la documentazione su pre-commit e mi ha reso la vita molto più facile. Pre-commit crea un pre-commit git hook e lancia una serie di controlli su ogni file in fase di commit, prima che vengano committati: questo assicura che, in base ai controlli configurati, i file rispettino questi check. Uno strumento che cambia davvero le carte in tavola, perché nel tuo flusso di scrittura del codice non dovrai prevedere passaggi aggiuntivi per formattazione e linting: modifichi, salvi, aggiungi, esegui il commit e tutte le modifiche saranno convalidate. Oltre all’aggiunta di strumenti autonomi, pre-commit viene fornito con molti controlli integrati che si sovrappongono parzialmente agli altri, ma il valore aggiunto vale totalmente i passi in più. Se ci troviamo a lavorare su progetti in cui il codice Python e quello JavaScript si trovano nello stesso repository, i comandi di linting frontend possono essere integrati in pre-commit per eseguire il linting del frontend insieme a quello di Python. Se vuoi approfondire puoi consultare il file di configurazione per i controlli configurati e la documentazione sugli hook di pre-commit per i dettagli. - Consigliato da Iacopo
PyCharm
PyCharm è un IDE fantastico, che si integra con tantissimi plugin e strumenti utili per lo sviluppo ed il debug. Ha un’interfaccia semplice ed intuitiva che ti permette di saltare velocemente da un file ad un altro, da una riga di codice ad un’altra, garantendo produttività e anche piacere nell’utilizzo. - Consigliato da Lorenzo
PyCharm è un popolare ambiente di sviluppo integrato (IDE) per la programmazione in Python. È molto utile per i grandi progetti perché offre un'ampia gamma di funzioni che facilitano la gestione e l'organizzazione di grandi basi di codice. Fornisce una serie di strumenti per la navigazione e l'esplorazione di codice, come la possibilità di saltare a un file o a una classe specifica, o di cercare simboli o testi specifici. Offre un'ampia gamma di opzioni di refactoring. Ha un debugger integrato che consente di scorrere il codice, impostare punti di interruzione e ispezionare le variabili, rendendo più facile trovare e risolvere i bug. È possibile integrarlo con vari plugin che ti permettono di lavorare non solo con Python ma con altri linguaggi. L’unico svantaggio è che mangia abbastanza risorse perché è scritto soprattutto in Java. - Consigliato da Sergey
faker
faker è una libreria Python che permette, tra le altre cose, di creare dati finti in maniera semplice e veloce, da utilizzare poi, ad esempio, nei i test. Questo è davvero comodo perché fa risparmiare un sacco di tempo da dedicare alla creazione di oggetti che presentino determinate caratteristiche da testare. - Consigliato da Lorenzo
jupyter
jupyter è un progetto che permette di lavorare in maniera semplice e veloce con i notebook di Python. È uno strumento davvero utile, soprattutto per chi lavora in ambito Machine Learning e Data Science.
- Consigliato da Lorenzo
django-extensions
django-extensions è un pacchetto di utili componenti aggiuntivi per Django. Fornisce una serie di strumenti e comandi in più per rendere più comodo ed efficiente il lavoro con Django. Tra quelle che trovo più interessanti c’è il comando shell_plus - l'esecuzione di una shell Python con i modelli Django pre-importati; argument --print-sql che mostra tutte le query SQL per una determinata richiesta; graph_models che permette di fare una visualizzazione di django app models. - Consigliato da Sergey
bpython
bpython è un'interfaccia leggera e un interprete Python che ha lo scopo di fornire un'esperienza più interattiva e facile da usare rispetto all'interprete Python standard. Aggiunge diverse funzionalità comuni agli IDE come in-line syntax highlighting, auto-indentation, tab-completion, signature and docstring information. Ha anche comandi molto comodi come paste mode e history. È possibile anche annullare l'ultima riga o reimportare tutti i moduli esterni e rivalutare tutto. È molto comodo per provare idee in modo pratico. Se è installato funziona come interfaccia predefinita per django-extensions shell_plus. - Consigliato da Sergey
pycodestyle e black
Lavorare su una codebase insieme ad altre persone può risultare difficile se il codice non segue uno stile condiviso, e fare tutto manualmente può essere pesante e tedioso, perché ognuno potrebbe avere abitudini di stile differenti. Per questo trovo che tool come `pycodestyle` e `black` siano molto utili. pycodestyle è un tool (che prima si chiamava `pep8`), la cui funzione è suggerire i punti del codice che non rispettano le linee guida di PEP8. PEP8, infatti, è il documento che raggruppa le convenzioni sullo stile di scrittura del codice Python nella standard library del linguaggio, e che viene usato come base anche nella community generale di sviluppatori e sviluppatrici. black invece è un formattatore: modifica i file in modo che siano scritti con uno stile in linea con lo standard condiviso.
Entrambi i tool possono essere configurati per essere più o meno permissivi, in modo da adattarli alle proprie esigenze (che possono essere diverse da quelle standard). - Consigliato da Mark
Poetry
Poetry è un sistema di gestione dei pacchetti e delle dipendenze per Python. Aiuta a garantire che il tuo progetto funzioni con le dipendenze specificate. È molto semplice da configurare e si occuperà delle tue dipendenze con solo alcuni semplici comandi. Se sviluppi con Python è uno strumento essenziale! - Consigliato da Damiano
Pyenv
Pyenv ti consente di passare da una versione di Python a un'altra semplicemente eseguendo un comando da riga di comando. È molto utile quando si tratta di testare un progetto che non funziona con la versione del sistema Python che stai utilizzando, specialmente se stai cercando di testare un vecchio progetto. - Consigliato da Damiano
La nostra carrellata di strumenti per sviluppare con Python termina qui. Ti abbiamo fatto sbirciare nella nostra cassetta degli attrezzi ma come sempre, ci piace confrontarci e sapere cosa ne pensi. Hai altri strumenti da segnalarci che secondo te dovrebbero entrare in questa lista? Vogliamo assolutamente saperlo! Scrivici nei commenti al blog post che vedi qui sotto, oppure sui social. Ci trovi su Twitter, Facebook e Linkedin.
Alla prossima!