Skip to content

Scope of Variables: Local vs. GlobalActivities & Teaching Strategies

Active learning helps students grasp variable scope because mistakes in tracing access feel immediate and concrete when they run code. Predicting outputs before execution builds careful reading habits that paper examples alone cannot create.

Secondary 3Computing4 activities25 min40 min

Learning Objectives

  1. 1Compare the accessibility of local and global variables within a Python program.
  2. 2Predict the output of Python code snippets that utilize both local and global variables.
  3. 3Analyze scenarios to justify the choice between using global variables and passing parameters to functions.
  4. 4Identify potential errors, such as UnboundLocalError, that arise from incorrect variable scope management.

Want a complete lesson plan with these objectives? Generate a Mission

30 min·Pairs

Code Prediction Challenge: Scope Hunt

Provide printed code snippets with local and global variables. Students predict outputs in pairs, discuss access rules, then test in Python IDLE. Debrief as a class on surprises.

Prepare & details

Differentiate between local and global variables in terms of their accessibility.

Facilitation Tip: During Scope Hunt, circulate and ask pairs to explain their predicted outputs step-by-step to uncover hidden assumptions about variable lifetime.

Setup: Groups at tables with access to source materials

Materials: Source material collection, Inquiry cycle worksheet, Question generation protocol, Findings presentation template

AnalyzeEvaluateCreateSelf-ManagementSelf-Awareness
40 min·Small Groups

Debugging Relay: Fix Scope Errors

Divide class into small groups. Each group gets buggy code with scope issues. They fix one error, pass to next group. Final groups run and explain fixes.

Prepare & details

Predict the output of a program involving both local and global variables.

Facilitation Tip: For Debugging Relay, give each group a different bug first to maximize peer discussion before they share fixes with the class.

Setup: Groups at tables with access to source materials

Materials: Source material collection, Inquiry cycle worksheet, Question generation protocol, Findings presentation template

AnalyzeEvaluateCreateSelf-ManagementSelf-Awareness
35 min·Small Groups

Parameter vs Global Debate: Rewrite Functions

Give functions using globals. In small groups, rewrite with parameters, test both versions. Groups present pros and cons to class.

Prepare & details

Justify when it is appropriate to use a global variable versus passing parameters.

Facilitation Tip: In the Parameter vs Global Debate, assign roles (pro-parameters vs pro-globals) to force students to defend positions they might not initially hold.

Setup: Groups at tables with access to source materials

Materials: Source material collection, Inquiry cycle worksheet, Question generation protocol, Findings presentation template

AnalyzeEvaluateCreateSelf-ManagementSelf-Awareness
25 min·Individual

Scope Visualizer: Draw and Code

Individually sketch variable lifetimes on paper, then code matching programs. Share sketches in pairs to check understanding before running.

Prepare & details

Differentiate between local and global variables in terms of their accessibility.

Facilitation Tip: During Scope Visualizer, insist students label each variable as local or global on their diagrams before coding to reinforce the connection between visuals and code.

Setup: Groups at tables with access to source materials

Materials: Source material collection, Inquiry cycle worksheet, Question generation protocol, Findings presentation template

AnalyzeEvaluateCreateSelf-ManagementSelf-Awareness

Teaching This Topic

Teachers approach scope by starting with small, predictable snippets where students can see the exact moment a variable disappears. Avoid abstract rules at first; instead, let students experience the NameError when a local is accessed outside its function. Research shows tracing execution beats lectures for retention, so prioritize live debugging over slides. Always connect scope to real bugs students will face, like accidental overwrites or hard-to-find typos in global lists.

What to Expect

Successful learning looks like students confidently predicting outputs, explaining scope boundaries with examples, and choosing parameters over globals in rewritten functions. They should also justify their choices with clear reasoning about modularity and bugs.

These activities are a starting point. A full mission is the experience.

  • Complete facilitation script with teacher dialogue
  • Printable student materials, ready for class
  • Differentiation strategies for every learner
Generate a Mission

Watch Out for These Misconceptions

Common MisconceptionDuring Code Prediction Challenge: Scope Hunt, watch for students who assume variables created inside any block persist outside, even if the block is a function.

What to Teach Instead

Have pairs run their predicted code immediately after writing it. When a NameError appears, ask them to circle where the variable was created and where it was accessed to trace the scope boundary.

Common MisconceptionDuring Debugging Relay: Fix Scope Errors, watch for students who think the global keyword makes all variables global automatically.

What to Teach Instead

After they fix a bug, ask them to explain why the global keyword was or was not needed in their solution, referencing the exact line where the variable was assigned.

Common MisconceptionDuring Parameter vs Global Debate: Rewrite Functions, watch for students who claim globals are always easier because they avoid parameters.

What to Teach Instead

Require them to test their rewritten functions with edge cases (e.g., negative numbers) to see how globals cause hidden changes that break modularity.

Assessment Ideas

Quick Check

After Code Prediction Challenge: Scope Hunt, collect each pair’s predicted outputs and reasoning. Look for explicit mentions of variable lifetime and where each variable is accessible.

Discussion Prompt

During Parameter vs Global Debate: Rewrite Functions, listen for students who justify their choices with examples of bugs caused by globals (e.g., accidental overwrites). Note whether they reference modularity or side effects.

Exit Ticket

After Scope Visualizer: Draw and Code, review students’ definitions and bug examples. Check if they distinguish local (function-only) from global (module-wide) and cite a specific scenario where a global could cause a bug.

Extensions & Scaffolding

  • Challenge: Write a program with nested functions where an inner function modifies a nonlocal variable. Have students predict the output after multiple calls.
  • Scaffolding: Provide partially completed code for Debugging Relay with only one variable’s scope labeled to reduce cognitive load.
  • Deeper exploration: Compare Python’s scoping with another language’s approach (e.g., JavaScript hoisting) using a short code comparison task.

Key Vocabulary

Variable ScopeThe region or context within a program where a variable is recognized and can be accessed.
Local VariableA variable declared inside a function or block, accessible only within that specific function or block.
Global VariableA variable declared outside of any function, accessible from anywhere within the program module.
Function ScopeThe scope that limits a variable's accessibility to the function in which it is defined.

Ready to teach Scope of Variables: Local vs. Global?

Generate a full mission with everything you need

Generate a Mission