Python Scope

Python has two scopes for variables:

  • Local scope: variables you create within a function are only available within the function.
  • Global scope: variables you create outside of a function belong to the global scope and can be used everywhere.

In this lesson, I’ll show you the difference between the two scopes with examples.

Local Scope

Let’s start with the local scope. Take a look at the following code:

Above, we see the print message that ran from within the function. The second print fails because the variable “test_string” is local to the scope. It’s not available globally.

Global Scope

The variables you create globally can be used within a function. Here is the code:

Our function is able to print the contents of the global variable. There is a catch, however. The function can only read the global variable, it can’t modify it. There is an exception to this rule, which I’ll show you in a minute.

Overlapping Variable Names

What happens when you use the same variable name globally and within a function? Let’s find out:

The code above assigns the variable “test_string” globally and within a function. We receive an error message right away. Once you assign a variable within a function, Python sees it as a variable with local scope. We receive the error message because we try to print a variable that isn’t assigned yet within the function.

Let’s change our code a bit. Let’s assign the variable within the function before we try to print it:

This works. The variable has a different value, one for the global scope, and another for the local scope.

Using the same variable name globally and within a function can be confusing. It’s best to avoid this.

Global Variable

In the previous example, we noticed that you can read a global variable from within the function. You can’t create or modify a global variable though from within the function. There is an exception to this rule. It’s possible when you use the global keyword.

Here is our code:

Above, I added the keyword global to make “test_string” a global variable. After running the function, we print the variable. As you can see, the variable is available globally.

Even though it’s possible to create or modify global variables from within the function, it’s best to avoid this because it can be confusing. Keep in mind that functions can return data. Your code is usually easier to read when you stick to the local scope and use the function’s return option to assign a global variable.


You have now learned how Python scopes work.

  • Variables you create within a function have the local scope and are only available within the function.
  • Variables you create outside of a function belong to the global scope.
  • You can use the global parameter to make a variable in a function global.

I hope you enjoyed this lesson. If you have any questions feel free to leave a comment.

Ask a question or start a discussion by visiting our Community Forum