Local scope in Python - Time & Space Complexity
Start learning this pattern below
Jump into concepts and practice - no test required
When we talk about local scope in Python, we want to see how fast the program runs when it uses variables inside functions.
We ask: How does the time to run change as the function does more work?
Analyze the time complexity of the following code snippet.
def greet(names):
for name in names:
message = f"Hello, {name}!"
print(message)
names_list = ["Alice", "Bob", "Charlie"]
greet(names_list)
This code says hello to each name in a list by creating a message inside the function and printing it.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The for-loop that goes through each name in the list.
- How many times: Once for each name in the input list.
As the list of names gets bigger, the program says hello more times, so it takes more steps.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 10 greetings and prints |
| 100 | About 100 greetings and prints |
| 1000 | About 1000 greetings and prints |
Pattern observation: The work grows evenly as the list grows; double the names, double the work.
Time Complexity: O(n)
This means the time to run grows directly with the number of names we greet.
[X] Wrong: "Because the message is created inside the function, it makes the code slower in a big way."
[OK] Correct: Creating a message inside the loop is quick and happens once per name, so it doesn't add extra loops or big delays.
Understanding how local variables inside functions affect speed helps you explain your code clearly and shows you know how programs grow with input size.
"What if we added another loop inside the function to say hello twice to each name? How would the time complexity change?"
Practice
local scope mean in Python?Solution
Step 1: Understand the meaning of local scope
Local scope means a variable is created inside a function and only exists there.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.Final Answer:
Variables exist only inside the function where they are created -> Option BQuick Check:
Local scope = variables inside function only [OK]
- Thinking local variables can be used outside the function
- Confusing local scope with global scope
- Believing variables are shared across functions
Solution
Step 1: Identify local variable definition
A local variable is created by assigning a value inside a function without global keyword.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.Final Answer:
def func():\n x = 5 -> Option AQuick Check:
Assign inside function = local variable [OK]
- Using global keyword when not needed
- Assigning variable outside function expecting it local
- Trying to return variable not defined inside function
def greet():
message = "Hello"
print(message)
greet()
print(message)Solution
Step 1: Understand variable scope in the code
Variable 'message' is defined inside greet(), so it is local to that function.Step 2: Trace the print statements
Calling greet() prints 'Hello'. Then print(message) outside function causes NameError because 'message' is not defined globally.Final Answer:
Hello\nNameError -> Option AQuick Check:
Local variable outside function causes NameError [OK]
- Assuming local variable is accessible globally
- Expecting both prints to show 'Hello'
- Ignoring NameError on second print
def add():
result = a + b
print(result)
add()
Assuming a = 2 and b = 3 are defined outside the function.Solution
Step 1: Identify variable scope issue
a and b are defined outside but used inside add() without global or parameters, causing NameError.Step 2: Fix by passing variables as parameters
Passing a and b as parameters to add() allows access without global keyword.Final Answer:
Pass a and b as parameters to add() -> Option DQuick Check:
Use parameters to access outside variables inside function [OK]
- Using global keyword unnecessarily
- Defining variables inside function losing outside values
- Ignoring NameError from missing variables
count_calls() is called, using local scope only?
def count_calls():
calls = 0
calls += 1
print(f"Called {calls} times")
count_calls()
count_calls()Solution
Step 1: Understand why calls resets
Variable calls is local and resets to 0 each call, so count never increases.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.Final Answer:
Use a default argument to store calls count -> Option CQuick Check:
Default argument keeps local state across calls [OK]
- Using global variable instead of local trick
- Defining calls outside function losing local scope
- Not realizing local variables reset each call
