Bird
Raised Fist0
Pythonprogramming~20 mins

Local scope in Python - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
๐ŸŽ–๏ธ
Local Scope Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
โ“ Predict Output
intermediate
2:00remaining
Output of variable inside a function
What is the output of this code?
Python
def greet():
    message = "Hello"
    print(message)

greet()
AHello
BNone
CNameError
Dmessage
Attempts:
2 left
๐Ÿ’ก Hint
Look where the variable message is defined and where it is used.
โ“ Predict Output
intermediate
2:00remaining
Accessing local variable outside function
What happens when you run this code?
Python
def show():
    number = 10

show()
print(number)
ANone
B10
CNameError
D0
Attempts:
2 left
๐Ÿ’ก Hint
Think about where number is defined and where you try to print it.
โ“ Predict Output
advanced
2:00remaining
Local variable shadowing global variable
What is the output of this code?
Python
value = 5

def test():
    value = 10
    print(value)

test()
print(value)
A10\n10
B5\n10
C5\n5
D10\n5
Attempts:
2 left
๐Ÿ’ก Hint
Check which value is printed inside and outside the function.
โ“ Predict Output
advanced
2:00remaining
Modifying global variable inside function without global keyword
What error or output does this code produce?
Python
count = 0

def increment():
    count += 1
    print(count)

increment()
AUnboundLocalError
B1
C0
DNameError
Attempts:
2 left
๐Ÿ’ก Hint
Think about how Python treats variables assigned inside functions.
โ“ Predict Output
expert
3:00remaining
Understanding local scope with nested functions
Consider this code. What is the output when outer() is called?
Python
def outer():
    x = 'local'
    def inner():
        x = 'nonlocal'
        print(x)
    inner()
    print(x)

outer()
Alocal\nlocal
Bnonlocal\nnonlocal
Clocal\nnonlocal
Dnonlocal\nlocal
Attempts:
2 left
๐Ÿ’ก Hint
Look at where x is assigned inside inner() and how it affects outer().

Practice

(1/5)
1. What does local scope mean in Python?
easy
A. Variables can be used anywhere in the program
B. Variables exist only inside the function where they are created
C. Variables are shared between all functions
D. Variables are stored permanently on the disk

Solution

  1. Step 1: Understand the meaning of local scope

    Local scope means a variable is created inside a function and only exists there.
  2. Step 2: Compare options with this meaning

    Only Variables exist only inside the function where they are created correctly states that variables exist only inside their function.
  3. Final Answer:

    Variables exist only inside the function where they are created -> Option B
  4. Quick Check:

    Local scope = variables inside function only [OK]
Hint: Local variables live only inside their function [OK]
Common Mistakes:
  • Thinking local variables can be used outside the function
  • Confusing local scope with global scope
  • Believing variables are shared across functions
2. Which of the following is the correct way to define a local variable inside a function?
easy
A. def func(): x = 5
B. x = 5 def func(): print(x)
C. def func(): global x x = 5
D. def func(): return x

Solution

  1. Step 1: Identify local variable definition

    A local variable is created by assigning a value inside a function without global keyword.
  2. Step 2: Check each option

    def func(): x = 5 assigns x inside the function, making it local. Others either use global or no assignment inside function.
  3. Final Answer:

    def func():\n x = 5 -> Option A
  4. Quick Check:

    Assign inside function = local variable [OK]
Hint: Assign variable inside function without global for local [OK]
Common Mistakes:
  • Using global keyword when not needed
  • Assigning variable outside function expecting it local
  • Trying to return variable not defined inside function
3. What will be the output of this code?
def greet():
    message = "Hello"
    print(message)

greet()
print(message)
medium
A. Hello NameError
B. Hello Hello
C. NameError Hello
D. NameError NameError

Solution

  1. Step 1: Understand variable scope in the code

    Variable 'message' is defined inside greet(), so it is local to that function.
  2. Step 2: Trace the print statements

    Calling greet() prints 'Hello'. Then print(message) outside function causes NameError because 'message' is not defined globally.
  3. Final Answer:

    Hello\nNameError -> Option A
  4. Quick Check:

    Local variable outside function causes NameError [OK]
Hint: Local variables can't be printed outside their function [OK]
Common Mistakes:
  • Assuming local variable is accessible globally
  • Expecting both prints to show 'Hello'
  • Ignoring NameError on second print
4. Find the error in this code and fix it:
def add():
    result = a + b
    print(result)

add()
Assuming a = 2 and b = 3 are defined outside the function.
medium
A. Add 'global a, b' inside add()
B. No error, code runs fine
C. Define a and b inside add()
D. Pass a and b as parameters to add()

Solution

  1. Step 1: Identify variable scope issue

    a and b are defined outside but used inside add() without global or parameters, causing NameError.
  2. Step 2: Fix by passing variables as parameters

    Passing a and b as parameters to add() allows access without global keyword.
  3. Final Answer:

    Pass a and b as parameters to add() -> Option D
  4. Quick Check:

    Use parameters to access outside variables inside function [OK]
Hint: Pass outside variables as parameters to use inside function [OK]
Common Mistakes:
  • Using global keyword unnecessarily
  • Defining variables inside function losing outside values
  • Ignoring NameError from missing variables
5. How can you modify this code to keep track of how many times count_calls() is called, using local scope only?
def count_calls():
    calls = 0
    calls += 1
    print(f"Called {calls} times")

count_calls()
count_calls()
hard
A. Declare calls as global variable
B. Define calls outside function and modify inside
C. Use a default argument to store calls count
D. Use a class to store calls count

Solution

  1. Step 1: Understand why calls resets

    Variable calls is local and resets to 0 each call, so count never increases.
  2. Step 2: Use default argument to keep state locally

    Using a default argument like calls=[0] keeps count inside function without global or external variables.
  3. Final Answer:

    Use a default argument to store calls count -> Option C
  4. Quick Check:

    Default argument keeps local state across calls [OK]
Hint: Use default mutable argument to keep count inside function [OK]
Common Mistakes:
  • Using global variable instead of local trick
  • Defining calls outside function losing local scope
  • Not realizing local variables reset each call