Python Globals: Import Vs. Execfile
Solution 1:
execfile
without globals
, locals
argument, It executes the file content in the current namespace. (the same namespace that call the execfile
)
While, import
execute the specified module in a separated namespace, and define the mymodule
in the local namespace.
Solution 2:
In the second part where you import mymodule
, the reason why it isn't showing up is that a
is global to the namespace of mymodule
as done that way.
Try:
print mymodule.a
This prints:
1
As expected.
As per the Python documentation:
The global statement is a declaration which holds for the entire current code block. It means that the listed identifiers are to be interpreted as globals. It would be impossible to assign to a global variable without global, although free variables may refer to globals without being declared global.
Names listed in a global statement must not be used in the same code block textually preceding that global statement.
Names listed in a global statement must not be defined as formal parameters or in a for loop control target, class definition, function definition, or import statement.
Post a Comment for "Python Globals: Import Vs. Execfile"