Vediamo cosa significa questa sintassi che troviamo spesso negli script python
Prendiamo come esempio due script python uno principale chiamato radice.py e un secondo chiamato secondo.py. Il primo script sara il file che conterra il codice principale della nostra applicazione mentre nel secondo ci saranno delle funzioni secondarie che potranno essere chiamate da radice.py importando secondo.py come modulo.
Vediamo il codice di radice.py:
import secondo as secondo
print("Script principale")
secondo.stampaMessaggio()
Vediamo ora come si presenta lo script secondo.py:
def main():
print("Questo sara' eseguito solo se chiamo questo script direttamente")
def stampaMessaggio():
print("questa funziona stampa questo messaggio se chiamata!")
print("Secondo Script")
if __name__ == "__main__":
main()
stampaMessaggio()
Ora vediamo cosa succede se mandiamo in esecuzione lo script radice.py:
python radice.py
Secondo Script
Script Principale
questa funziona stampa questo messaggio se chiamata!
Verdiamo che come prima cosa, lo script, stampera’ Secondo Script in quanto alla chiamata import secondo as secondo per l’importazione del secondo script come modulo, lo stesso viene anche eseguito, pertanto se ci sono delle istruzioni fuori dalla definizione di funzioni, queste vengono processate mentre non viene processato quello che e’ contenuto nell’ if __name__ == “__main__”:
Se invece mandiamo in esecuzione direttamente lo script secondo.py:
python secondo.py
Secondo Script
Questo sara' eseguito solo se chiamo questo script direttamente
questa funziona stampa questo messaggio se chiamata!
Come si vede, verranno eseguite sia le istruzioni che non sono contenute dentro le funzioni sia le istruzioni che sono contenute nell’ if __name__ == “__main__”:
Questa e’ la funzione dell’ istruzione if __name__ == “__main__”: , quella di far eseguire determinate istruzioni solo se lo script viene invocato direttamente come programma a se stante e non quando viene chiamato come modulo da un altro script