if name == main

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__)
if name == main è una condizione che ci  permette di eseguire lo script in due modalità  diretta o indiretta.

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()
if name == main è una condizione che ci  permette di eseguire lo script in due modalità  diretta o indiretta.

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()
if name == main è una condizione che ci  permette di eseguire lo script in due modalità  diretta o indiretta.

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

if name == main è una condizione che ci  permette di eseguire lo script in due modalità  diretta o indiretta.

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.

Pubblicità