Skip to content Skip to sidebar Skip to footer

Python Globals: Import Vs. Execfile

I put a method in a file mymodule.py: def do_something(): global a a=1 If I try >>> execfile('mymodule.py') >>> do_something() >>> print a I ge

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"