In questo tutorial impareremo come utilizzare l'attributo __name__ di un programma Python per eseguirlo dinamicamente in contesti diversi.
Qual è la funzione main () in Python?
Alcuni linguaggi di programmazione hanno una funzione speciale chiamata main()
che è il punto di esecuzione di un file di programma. L'interprete Python, tuttavia, esegue ogni riga in serie dall'inizio del file e non ha una main()
funzione esplicita .
Python offre altre convenzioni per definire il punto di esecuzione. Uno di questi sta usando la main()
funzione e la proprietà __name__ di un file python.
Cos'è __name__ in Python?
La variabile __name__ è una speciale variabile Python incorporata che mostra il nome del modulo corrente.
Ha valori diversi a seconda di dove eseguiamo il file Python. Diamo un'occhiata a un esempio.
Esecuzione di file Python come script
Supponiamo di avere un file Python chiamato helloworld.py con il seguente contenuto:
print(__name__)
Se eseguiamo helloworld.py dalla riga di comando, viene eseguito come uno script Python. Possiamo eseguire il programma Python usando il seguente comando:
$ python helloworld.py
Quando eseguiamo il programma come uno script, il valore della variabile __name__ è impostato su __main__. Quindi l'output del seguente programma sarà:
__principale__
Esecuzione di file Python come modulo
Possiamo anche eseguire un file Python come modulo. Per questo, dobbiamo importare questo file in un altro programma Python. Diamo un'occhiata a un esempio.
Supponiamo di avere un file Python chiamato main.py nella stessa directory del file heloworld.py. Ha il seguente contenuto:
import helloworld
Quando eseguiamo questo file, avremo il seguente output:
Ciao mondo
Qui, possiamo vedere che l'importazione di un modulo esegue anche tutto il codice nel file del modulo.
Ma possiamo vedere che invece di visualizzare __main__, il programma mostra il nome del modulo, cioè helloworld.
È perché, nel contesto dell'esecuzione di un file Python come modulo, il nome del modulo stesso viene assegnato alla variabile __name__.
Usare if condizionale con __name__
Ora che abbiamo capito come vengono assegnati valori alla variabile __name__, possiamo usare la if
clausola condizionale per eseguire lo stesso file Python in modo diverso in contesti diversi.
Diamo un'occhiata a un esempio.
Supponiamo di modificare il contenuto del file helloworld.py nel seguente:
def main(): print("Hello World") if __name__=="__main__": main()
Ora, quando lo eseguiamo come script tramite la riga di comando, l'output sarà:
Ciao mondo
Tuttavia, quando lo eseguiamo come modulo importandolo nel file main.py , non viene visualizzato alcun output poiché la main()
funzione non viene chiamata.
Qui abbiamo creato una main()
funzione personalizzata nel file helloworld.py . Viene eseguito solo quando il programma viene eseguito come script autonomo e non come modulo importato.
Questo è il modo standard per definire esplicitamente la main()
funzione in Python. È uno dei casi d'uso più popolari della variabile __name__ di un file Python.