if name == main è una condizione che ci permette di eseguire lo script in due modalità diretta o indiretta. Per esecuzione diretta intendo quando si lancia il codice direttamente , invece per indiretto intendo quando lo script si importa come una libreria.
Esempio 1
print(__name__)

Nota è possibile testare il codice direttamente tramite CMD
Descrizione:
Nel esempio di sopra con la funzione print() rendo leggibile la variabile __name__. Nota che non lo creata io è un codice di base quando lo script si lancia in modo diretto pythaon assegna il valore __main__ alla variabile __name__
Esempio 2
def generic():
print("ciao")
if __name__ == "__main__":
generic()

Descrizione:
quindi da quello che si e detto nell’esempio 1 io posso decidere quale blocco di codice attivare quando lo script viene eseguito in una modalità o in un altra.
Esempio 3 (prestare attenzione a questo esempio è quello successivo per capire il codice if name == main)
class klas:
def __init__(self):
return
def generic(self):
print("sono la funzione generic")
def main_function():
klas().generic()
if __name__ == "__main__":
main_function()

Descrizione:
Nel esempio di sopra ho creato una classe e sto lanciando lo script direttamente in questo caso si attiva la condizione ” if __name__ == “__main__”: ” ed il codice si indirizza verso la funzione def main_function():
che a sua volta indirizza il codice verso la funzione def generic(self): come risultato oyteniamo il messaggio sono la funzione generic
Esempio 4 Ma se invece importo lo s tesso codice come una libreria

Descrizione : Nel esempio di sopra ho creato due file “script1” e “script2” entrambi devono stare sulla stessa cartella. Sempre sulla stessa cartella lancio il CMD quindi eseguo lo script2 . lo script2 non fa altro che richiamare il blocco di codice dello script1 che è quello del esempio 3 . Cosi facendo ho lanciato in modo indiretto il codice del esempio 3 di conseguenza non si attiva la condizione if __name__ == “__main__”: . Su questo esempio il __main__ (vedi esempio 1 ) è lo script2 . Chiaramente dallo script2 decido io cosa attivare nello script1.