Sono nuovo di Python, quindi questa è probabilmente una semplice domanda di scoping. Il seguente codice in un file Python (modulo) mi confonde leggermente:
if __name__ == '__main__':
x = 1
print x
In altre lingue in cui ho lavorato, questo codice genererebbe un'eccezione, poiché la x
variabile è locale if
all'istruzione e non dovrebbe esistere al di fuori di essa. Ma questo codice viene eseguito e stampa 1. Qualcuno può spiegare questo comportamento? Tutte le variabili create in un modulo sono globali / disponibili per l'intero modulo?
if
istruzione precedente non è vera (ad esempio, non lo__name__
è , ad esempio quando importi il modulo invece di eseguirlo di livello superiore), allora non sarà mai stato associato e l' istruzione successiva lancerà a .'__main__'
x
print x
NameError: name 'x' is not defined