The global Declaration
What if you really need to modify a value in the global scope from within a function? This is possible in Python using the
global declaration. In this example, the
global x statement indicates that while the function executes, references to the name
x refer to the
x in the global namespace.
That means that when the value
40 is assigned to
x after the local
x statement, the interpreter doesn’t create a new reference in the local namespace of the function.
Instead, it assigns a new value to
x in the global namespace. This example uses the equals specifier (
=) for f-strings, which is added in Python 3.8.
So, when you load the module and run the function, you will see that
x is not added to the local namespace, and it has the value
And now when you call
x, which is in the global namespace, you will see that its value has indeed been changed to
As you have seen in an earlier lesson, the
globals() function returns a reference to the global namespace dictionary. That means you can just reassign a value to a variable in the global scope directly through the dictionary that is returned by the
globals() function, as you will see when you run the function and look at the current value of
x. There isn’t much reason to do it this way, since the
global declaration definitely makes the intent more clear.
Since a variable can be reassigned through the global namespace dictionary that is returned by the
globals() function and using the
global declaration has a similar behavior, you can also declare a new global variable within the function.
So when you try to call
y before calling the function, you will see it doesn’t exist yet in the global namespace. However, when you call the function and then call
y, you will see it is indeed created in the global namespace.
Just like you can with a lot of things in Python, it is also possible to specify several names in a single
One thing to look out for when using the
global declaration is that it appears in the function before it is used. In this function, the value of
x is printed before the
global declaration, which will throw a
03:13 In this lesson, you learned about changing variables in the global scope. But what if you want to change variables in an enclosed scope? That is what you will learn in the next lesson.
Become a Member to join the conversation.