Funzione principale di Python

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 ifclausola 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.

Articoli interessanti...