Я новичок в Python, так что это, вероятно, простой вопрос. Следующий код в файле (модуле) Python меня немного сбивает с толку:
if __name__ == '__main__':
x = 1
print x
На других языках, с которыми я работал, этот код вызывал бы исключение, поскольку переменная x
является локальной для оператора if
и не должна существовать вне его. Но этот код выполняется и печатает 1. Может ли кто-нибудь объяснить такое поведение? Все ли переменные, созданные в модуле, глобальны / доступны для всего модуля?
if
не выполняется (например,__name__
не'__main__'
, например, когда вы импортируете модуль вместо его выполнения на верхнем уровне), тогдаx
никогда не будет привязан, и последующий операторprint x
выдастNameError: name 'x' is not defined
. - person Santa   schedule 14.05.2010