Come creare, importare e riutilizzare il proprio modulo in Python
Che tu sia un esperto o un principiante nella programmazione Python, devi avere familiarità con il comando import modules . Tuttavia, come nuovo arrivato, potresti non avere un'idea da dove provengono quei moduli.
Diamo uno sguardo più approfondito per comprendere l'origine di quei moduli, insieme a come crearli e importarli per il riutilizzo.
Una delle migliori pratiche quando si lavora con la maggior parte dei linguaggi lato server è modulare il codice in modo che sia riutilizzabile. Poiché Python è orientato agli oggetti, è uno di quei linguaggi che rende possibile la riusabilità del codice.
La modularizzazione del codice implica la scrittura di codici che eseguono diverse istruzioni in blocchi. Viene utilizzato per separare le attività l'una dall'altra.
Quando modularizzi un codice, gli dai un nome univoco. Quel nome è la sua identità e significa che la prossima volta che dovrai usare quel blocco di codice, dovrai solo chiamarne il nome e non l'intero codice.
Questa pratica rende il tuo lavoro molto più semplice e veloce durante un progetto nella vita reale. La modularizzazione del codice migliora anche la velocità di esecuzione e semplifica i test. In sostanza, rende il tuo codice più efficiente e leggibile.
Sebbene il nostro esempio qui non sia basato sulla programmazione orientata agli oggetti (OOP), dobbiamo discuterne brevemente prima di passare alla creazione di un modulo.
Il codice che si intende riutilizzare a volte può essere autonomo come singole funzioni. Ma può anche essere sotto forma di metodi in una classe . È qui che entra in gioco il concetto di OOP.
OOP è la presentazione dei codici come oggetti indipendenti sotto forma di una classe. Ogni oggetto ha quindi i suoi attributi e metodi.
Questi attributi sono le caratteristiche della classe, mentre ogni metodo definisce il comportamento degli attributi.
Invece di scrivere codice lungo che è meno efficiente – una convenzione nella programmazione procedurale – il tuo codice diventa più efficiente e specifico in OOP. Il motivo è che le funzioni ei dati sono memorizzati in classi indipendenti in OOP, al contrario della separazione di entrambi nella programmazione procedurale.
Ogni classe che crei assume quindi un'identità. Quindi, quando hai bisogno di un modulo denominato da una classe, lo chiami con riferimento a quella classe.
Per una migliore comprensione, dai un'occhiata alla nostra guida per principianti alla comprensione dell'OOP .
Andando avanti, diamo un'occhiata a come riutilizzare la funzione per un contatore di parole in un altro file Python. Questa guida si concentrerà solo sulla creazione di funzioni riutilizzabili che non sono all'interno di un oggetto.
Prima di tutto, apri un prompt dei comandi in qualsiasi posizione sul tuo computer per avviare un nuovo progetto. In questo caso, useremo un nome di progetto di word_count . Per farlo, digita mkdir word_count .
Successivamente, utilizza il tuo strumento di ambiente virtuale preferito per creare un nuovo ambiente virtuale . Se ne hai già creato uno, attivalo semplicemente. Assicurati di essere ancora nella directory del tuo progetto.
Come buona pratica, per creare la funzione contatore di parole, proviamo prima a trovare una formula grezza per calcolarla. In genere, puoi trovare un conteggio parole aggiungendo uno al numero di spazi in una frase. Nota che anche se potresti non aver bisogno di un conteggio delle parole, è come l'idea si riferisce alla riusabilità del codice che conta per questa spiegazione.
Quindi, apri un editor di testo nella posizione del tuo progetto e crea un nuovo file Python. In questo caso, il file è denominato wordcounter.py ; assicurati di utilizzare l'estensione .py corretta.
Ecco come appare il file wordcounter :
Ora che il codice grezzo funziona, lo modulizziamo creando una funzione che renda il codice riutilizzabile:
Questo è tutto; abbiamo creato un modulo contatore di parole. Vediamo come riutilizzarlo.
Ricorda che in precedenza hai creato un file denominato wordcounter.py . Quel file contiene una funzione chiamata CountWords . Se hai bisogno di quella funzione in un nuovo file e non vuoi riscrivere l'intero codice o funzione, tutto ciò che devi fare è importare quella funzione come modulo nel tuo nuovo file.
Nota che tutti i tuoi file Python devono essere nella stessa directory, in questo caso. Per assicurarti che sia così, crea un nuovo file Python nella stessa directory in cui hai il file wordcounter.py .
Ecco come appare il nuovo file:
Nello snippet sopra, CountWords è la funzione all'interno del file wordcounter.py . Per riutilizzare quella funzione in un nuovo file Python, la importiamo dal suo file genitore ( wordcounter.py ).
Cosa succede se il nuovo file non si trova nella stessa directory del file del modulo? In questi casi, è necessario fare riferimento al modulo utilizzando un'importazione assoluta.
Per capirlo un po 'di più, supponiamo che tu abbia creato un nuovo file nella directory del tuo progetto. Ma il file da cui intendi importare la funzione (che è wordcounter , in questo caso), si trova in un'altra cartella all'interno della directory del tuo progetto — chiamiamola subword_count .
Per importare il tuo modulo da wordcounter (che ora si trova nella cartella subword_count ) in un nuovo file Python, devi chiamarlo assolutamente. Per vedere come funziona, crea un nuovo file nella directory del tuo progetto, dagli il tuo nome preferito e importa il tuo modulo come scritto nello snippet di codice di seguito:
Durante un'importazione assoluta, Python esplora la cartella principale ( subword_count in questo caso) e individua il file o il modulo contenente la funzione di interesse ( CountWords ).
Per scomporre il significato dell'importazione assoluta sopra, subword_count è una cartella nella directory del progetto che contiene il file wordcounter.py . Quel file contiene quindi la funzione CountWords .
Modularizzare e riutilizzare il codice è una best practice per qualsiasi progetto in esecuzione. Se scrivi OOP, cosa che probabilmente farai spesso, puoi importare una classe da un modulo o chiamare una funzione da una classe. Se la classe si trova in una cartella, importala assolutamente nel tuo nuovo file.
La stessa pratica si applica alle funzioni che non sono in un oggetto. A seconda del layout del tuo progetto, puoi importarli in modo esplicito o assoluto, come abbiamo fatto sopra.