Jestem nowy w Pythonie, więc jest to prawdopodobnie proste pytanie dotyczące zakresu. Poniższy kod w pliku (module) Pythona nieco mnie dezorientuje:
if __name__ == '__main__':
x = 1
print x
W innych językach, w których pracowałem, ten kod zgłosiłby wyjątek, ponieważ x
zmienna jest lokalna dla if
instrukcji i nie powinna istnieć poza nią. Ale ten kod wykonuje i drukuje 1. Czy ktoś może wyjaśnić to zachowanie? Czy wszystkie zmienne są tworzone w module globalnym / dostępne dla całego modułu?
if
powyższa instrukcja nie jest prawdziwa (tzn. Nie__name__
jest , na przykład podczas importowania modułu zamiast wykonywania go na najwyższym poziomie), to nigdy nie zostanie powiązany, a kolejna instrukcja rzuci .'__main__'
x
print x
NameError: name 'x' is not defined