Il significato di if __name__ == ‘__main__’

di Lorenzo Neri

Il significato di if __name__ == ‘__main__’ in Python qual è? A che cosa serve e come funziona? È quello che scoprirai leggendo questo articolo.

Questa riga di codice in Python, ovvero if __name__ == ‘__main__’ ha un significato abbastanza lineare, è la grammatica è la non-chiarezza che di primo acchito ci frega 😀

All’inizio può spaventare, visto che sono parecchio tecnichesi le variabili utilizzate in questa semplice riga di codice!

Ma prima di introdurti all’argomento, permettimi di presentarmi.

Il mio nome è Lorenzo Neri e sono un informatico: realizzo contenuti per aiutare le persone a padroneggiare l’arte del nuovo millennio, ovvero l’informatica!

Prima di addentrarci nel significato di if __name__ == ‘__main__’ parliamo un attimo dell’interprete di Python.

Quando legge un file che contiene del codice Python, fa due cose molto semplici:

  1. Imposta alcune variabili speciali, tra queste c’è __name__
  2. Esegue tutto il codice presente nel file

La variabile __name__ in Python: la prima parte di if __name__ == ‘__main__’

Facciamo un esempio concreto che ti aiuti a capire.

Questo è il codice all’interno del file “codice.py”:

print(“scrivo prima di importare”)
import time
print(“scrivo prima della funzione ciao”)
def ciao():
	print(“ciao”)
print(“scrivo prima della funzione tempo”)
def tempo():
	print(time.localtime(123456789))
print(“scrivo prima di __name__”)
if __name__==’__main__’:
	ciao()
	tempo()

Variabili speciali

Quando l’interprete di Python legge un file sorgente, definisce prima di tutto delle variabili speciali. In questo caso, la nostra variabile speciale è __name__.

Esecuzione come programma principale

Se stai eseguendo lo script “codice.py” come programma principale (quindi lo apri e lo esegui direttamente), l’interprete assegna la stringa ‘__main__’ alla variabile __name__.

Script importato come modulo

Diversamente, immagina che qualcuno stia usando il tuo script, ma lo vuole importare come modulo nel suo stesso programma, per intenderci:

import miocodice

Quello che farà l’interprete è cercare innanzitutto il tuo file, assegnerà il nome “miocodice” alla variabile __name__.


Arrivati a questo punto, il significato di if __name__ == “__main__” va visto sotto un’ultima prospettiva.

Il significato di if __name__ == “__main__”: cosa succede con l’esecuzione

Una volta che le variabili speciali sono state impostate, l’interprete eseguirà tutto il codice nel modulo, una riga per volta.

Cosa succede un passo per volta

  1. Stampa la stringa “prima di importare”
  2. Carica il modulo “time” e lo assegna alla variabile chiamata time.

    Ciò che succede è questo:

    time = __import__(“time”)

  3. Stampa la stringa “scrivo prima della funzione ciao”
  4. Esegue la prima funzione che abbiamo scritto e crea la variabile “ciao()” a cui sarà assegnato il codice della funzione stessa
  5. Stampa la stringa “scrivo prima della funzione tempo”
  6. Succede la stessa cosa del punto 4, ma questa volta la variabile è “tempo()”
  7. Stampa la stringa “scrivo prima di __name__”

8. A questo punto succede questo se il tuo modulo è eseguito come programma principale

La variabile __name__ sarà impostata con il valore “__main__” ed eseguire le due funzioni che abbiamo scritto prima, quindi vedremo a video “ciao” e il valore restituito da “time.localtime(123456789)”

8. Oppure succede questo se il tuo modulo è importato in un altro programma
La variabile __name__ sarà valorizzata con “miocodice” e il contenuto che segue if __name__ == ‘__main__’ significato non verrà eseguito, sarà saltato a piè pari!

Continua a scoprire di più con questi articoli!

Lascia un commento

Questo sito potrebbe fare uso di cookie e siccome l'UE mi obbliga a fartelo presente, eccoti il classico banner dove puoi decidere come gestirli. Accetta Leggi di più