LeetCampus
Interview Question

What is a namespace in Python?

July 24, 2025
0 views
Difficulty: Medium
Popularity: Common
Share on

Question Explanation

A namespace in Python refers to a container that holds a set of identifiers (names) and ensures that all of them are unique within that container. This concept is crucial for organizing code and avoiding naming collisions, especially in large projects. Interviewers often ask about namespaces to assess a candidate's understanding of scope, variable resolution, and how Python manages identifiers. Understanding namespaces is foundational for writing modular, maintainable code, as it allows developers to define functions, classes, and variables without worrying about interference from other parts of the program. Historically, namespaces have evolved with Python to include different types such as global, local, and built-in namespaces. Misconceptions often arise around the idea that all variable names are global or that they can be accessed freely without regard for scope. In practice, namespaces help manage the visibility of variables, making it easier to develop complex applications while maintaining clarity and organization in the codebase. Recognizing how and when to use namespaces effectively is a vital skill for any Python developer.

Sample Answers

Example 1: Basic Explanation of Namespaces

In Python, a namespace can be thought of as a mapping between names (identifiers) and objects. For instance, when you define a variable, Python creates a mapping of the variable name to the value you assign it. This allows you to use the same name in different scopes without conflict. For example:

x = 5  # Global namespace

def my_function():
    x = 10  # Local namespace
    print(x)

my_function()  # Outputs: 10
print(x)  # Outputs: 5

In this code, the variable x is defined in two different namespaces: the global namespace and the local namespace within my_function. The function's x does not affect the global x, demonstrating how namespaces help manage variable scope effectively.

Example 2: Types of Namespaces

Namespaces in Python can be broadly categorized into three types: local, global, and built-in. Understanding these types is crucial for efficient coding.

  • Local Namespace: Created when a function is called, containing all names defined within that function.
  • Global Namespace: Contains names defined at the top level of a module or script. It lasts as long as the script runs.
  • Built-in Namespace: Contains names such as built-in functions (like print() or len()) and is available in any Python program.

Consider the following example:

x = "global"

def outer_function():
    x = "outer"
    def inner_function():
        x = "inner"
        print(x)
    inner_function()
    print(x)

outer_function()
print(x)

This code illustrates how names are resolved in nested functions, showing the hierarchical nature of namespaces.

Example 3: Common Misconceptions about Namespaces

One common misconception is that modifying a variable in a local namespace automatically changes the corresponding variable in the global namespace. This is not the case unless explicitly stated using the global keyword. For instance:

x = 5

def modify_x():
    x = 10  # This creates a new local variable
    print(x)

modify_x()  # Outputs: 10
print(x)  # Outputs: 5

In this example, modify_x creates a new local variable x, leaving the global x unchanged. To modify the global variable, you need:

def modify_x():
    global x
    x = 10

Understanding this distinction is critical for avoiding unintended consequences in your code and is a key area interviewers focus on when assessing your understanding of Python namespaces.

Keywords

Pythonnamespacescopeidentifierprogramming

Ready to practice more questions?

Explore our collection of technical interview questions from top companies.

View All Questions