Sono nuovo di Python, quindi questa è probabilmente una semplice domanda di scoping. Il seguente codice in un file Python (modulo) mi confonde un po ':Qual è lo scopo di una variabile inizializzata in un'istruzione if?
if __name__ == '__main__':
x = 1
print x
In altre lingue con cui ho lavorato in, questo codice sarebbe un'eccezione, come variabile x
è locale alla dichiarazione if
e dovrebbe non esiste al di fuori di esso. Ma questo codice viene eseguito e stampato 1. Qualcuno può spiegare questo comportamento? Tutte le variabili create in un modulo sono globali/disponibili per l'intero modulo?
Un altro capriccio di cui potresti non essere a conoscenza: se l'istruzione 'if' di cui sopra non è vera (cioè,' __name__' è * not * ''__main __'', ad esempio quando importi il modulo invece di eseguirlo di primo livello), quindi 'x' non sarà mai stato associato, e la successiva istruzione' print x' genererà un 'NameError: name 'x' non è definito'. – Santa