I'm new to Python, so this is probably a simple scoping question. The following code in a Python file (module) is confusing me slightly:
if __name__ == '__main__':
x = 1
print x
In other languages I've worked in, this code would throw an exception, as the x
variable is local to the if
statement and should not exist outside of it. But this code executes, and prints 1. Can anyone explain this behavior? Are all variables created in a module global/available to the entire module?
if
statement above does not hold true (i.e.,__name__
is not'__main__'
, for example when you import the module instead of executing it top-level), thenx
will never have been bound, and the subsequentprint x
statement will throw aNameError: name 'x' is not defined
. – Santa