Locked learning resources

Join us and get access to thousands of tutorials and a community of expert Pythonistas.

Unlock This Lesson

Locked learning resources

This lesson is for members only. Join us and get access to thousands of tutorials and a community of expert Pythonistas.

Unlock This Lesson

Navigating Namespaces and Scope in Python (Summary)

Virtually everything that a Python program uses or acts on is an object. Even a short program will create many different objects. In a more complex program, they’ll probably number in the thousands. Python has to keep track of all these objects and their names, and it does so with namespaces.

In this course, you learned:

  • What the different namespaces are in Python
  • When Python creates a new namespace
  • What structure Python uses to implement namespaces
  • How namespaces define scope in a Python program
  • How the LEGB rule applies to scope

Sample Code (.zip)

2.0 KB

Course Slides (.pdf)

414.4 KB
Avatar image for Alain Rouleau

Alain Rouleau on March 3, 2021

Great explanation of namespaces and the concept of scope, thanks!

I’ve seen many people try to explain these Python concepts over the years. But this is one of the best tutorials that I’ve seen. Kudos! I like how you used simple functions to explain things, introduced the globals() function, and nonlocal for enclosed functions as well. Not many people know about those.

Plus, use of the equal sign in f-strings was a nice touch. Definitely going to use that in the future. Not to mention, the "i" command line option. Pretty sure 99% of people don’t know about that feature either which allows you to start an interactive session and import a module ALL in one step. Very handy.

Keep up the good work!

Avatar image for RobyB

RobyB on March 4, 2021

I agree with you Alan :)

Avatar image for Dirk

Dirk on March 22, 2021

Short and sweet. I liked it a lot.

Avatar image for mckown

mckown on July 14, 2021

Excellent! I think Alain’s review is spot on.

I finished a course on import before this and heard (again) that one should not use “from module import *“. Something clicked while going through this course and when I imported asterisk from tkinter, I was able to see all the module’s functions, constants, etc. crowding into the globals space. This would be a good demo (in this course or the import course).

Fantastic job, Johan and team!

Become a Member to join the conversation.