Global keyword in Python - Time & Space Complexity
Start learning this pattern below
Jump into concepts and practice - no test required
Let's explore how using the global keyword affects the time it takes for a program to run.
We want to see if accessing or changing global variables changes how long the program takes as it grows.
Analyze the time complexity of the following code snippet.
count = 0
def increment(n):
global count
for _ in range(n):
count += 1
increment(5)
This code increases a global variable by 1, n times inside a loop.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The for-loop that runs n times.
- How many times: Exactly n times, where n is the input number.
Each time n grows, the loop runs that many more times, increasing work linearly.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 increments |
| 100 | 100 increments |
| 1000 | 1000 increments |
Pattern observation: The work grows directly with n; double n means double work.
Time Complexity: O(n)
This means the time to run grows in a straight line as the input number n grows.
[X] Wrong: "Using the global keyword makes the loop slower or faster."
[OK] Correct: The global keyword only changes where the variable lives, not how many times the loop runs. The time depends on the loop count, not on global or local variables.
Understanding how global variables affect performance helps you write clear and efficient code, a skill valued in many coding challenges and real projects.
"What if we replaced the for-loop with a recursive function that increments the global variable? How would the time complexity change?"
Practice
What does the global keyword do in Python?
Solution
Step 1: Understand variable scopes
Variables defined outside functions are global, inside functions are local by default.Step 2: Role of
Theglobalkeywordglobalkeyword tells Python to use the global variable inside the function, allowing modification.Final Answer:
It allows a function to modify a variable defined outside it. -> Option BQuick Check:
global lets function change outside variable [OK]
- Thinking global creates new local variables
- Confusing global with import statements
- Assuming global deletes variables
Which of the following is the correct way to modify a global variable count inside a function?
count = 0
def increment():
?
count += 1Solution
Step 1: Identify the need to modify global variable
The function wants to increase the global variablecount.Step 2: Use correct keyword to access global variable
Usingglobal countinside the function tells Python to use the globalcount, not create a local one.Final Answer:
global count -> Option CQuick Check:
Use 'global' to modify global variables inside functions [OK]
- Using 'local' which is not a Python keyword
- Using 'nonlocal' which applies to enclosing functions, not globals
- Trying to define variable with 'def'
What is the output of this code?
value = 5
def change():
global value
value = 10
change()
print(value)Solution
Step 1: Analyze the function change()
The function declaresvalueas global and sets it to 10.Step 2: Effect of calling change()
Callingchange()updates the globalvaluefrom 5 to 10.Final Answer:
10 -> Option DQuick Check:
global lets function update outside variable [OK]
- Thinking print shows original value 5
- Expecting an error without global keyword
- Confusing local and global scopes
Find the error in this code and choose the fix:
counter = 0
def add():
counter += 1
add()
print(counter)Solution
Step 1: Identify the error cause
Trying to incrementcounterinsideadd()without declaring it global causes UnboundLocalError.Step 2: Fix by declaring global variable
Addingglobal counterinsideadd()tells Python to use the globalcountervariable.Final Answer:
Addglobal counterinsideadd()before incrementing. -> Option AQuick Check:
Declare global to modify outside variable inside function [OK]
- Ignoring the need for global declaration
- Trying to create local variable with same name
- Removing increment instead of fixing scope
You want to count how many times a function is called using a global variable calls. Which code correctly updates calls each time track() runs?
calls = 0
def track():
?
calls += 1
track()
track()
print(calls)Solution
Step 1: Understand the goal
We want to update the global variablecallsinside the functiontrack().Step 2: Use the correct keyword
Usingglobal callsinsidetrack()allows incrementing the globalcallsvariable.Step 3: Confirm output
Callingtrack()twice incrementscallsfrom 0 to 2, soprint(calls)outputs 2.Final Answer:
global calls -> Option AQuick Check:
Use global to update global counter inside function [OK]
- Using 'nonlocal' which is for nested functions
- Trying to assign local variable without global
- Resetting calls inside function
