Cheat sheet: PCAP-31-03 review of Python syntax, data structures, functions, modules, exceptions, OOP, files, and common exam traps.
Use the tables for a quick pre-exam check. Expand a topic’s notes for explanations, examples, and additional distinctions.
Scope and study context
This page is IT Mastery exam-prep support. It is not affiliated with Python Institute and does not replace the official exam syllabus or policies. Always verify registration rules, exam format, and current requirements with the official provider.
Scan the tables first. They summarize the rules most likely to cause mistakes.
Mark weak areas. Do not reread everything equally; target the rules you cannot explain quickly.
Practice output prediction. Many Python exam questions reward exact reasoning about values, types, scope, mutation, and control flow.
Use original practice questions immediately after review. The fastest improvement usually comes from topic drills with detailed explanations, not passive reading.
Revisit mistakes by category. Track whether you missed syntax, object behavior, mutability, inheritance, exceptions, or standard-library behavior.
Use this pattern to prevent script-only code from running on import.
Module search and packages
Item
Meaning
Module
Single .py file or built-in/extension module
Package
Directory-based module grouping
sys.path
Search locations for imports
__init__.py
Package initialization file in traditional packages
dir(module)
Inspect names in a module
help(obj)
Interactive documentation aid
importsysprint(sys.path)
Common standard modules
Module
Typical use
math
Deterministic math functions, constants
random
Pseudorandom choices and numbers
platform
Runtime/platform information
sys
Interpreter/system interaction
os
Operating system interfaces
datetime
Dates and times
time
Time-related functions
Avoid assuming exact platform output in exam questions unless it is explicitly given.
Package management concepts
Term
Meaning
pip
Python package installer
PyPI
Public package index
Virtual environment
Isolated package environment
Dependency
Package required by another package
Exam emphasis is usually conceptual: know what package installation and isolation are for.
Import forms
Import statement
Name available afterward
import math
math
import math as m
m
from math import sqrt
sqrt
from math import sqrt as s
s
from math import *
Many public names; avoid in production-style reasoning
Import traps
Trap
Correct understanding
import module vs from module import name
The first imports the module name; the second imports a specific object name.
Aliasing
After import math as m, use m.sqrt(...), not math.sqrt(...) unless math was also imported.
Namespace pollution
from module import * can overwrite existing names and reduce clarity.
Module execution
Top-level module code executes when imported.
Repeated imports
Modules are cached after import in normal execution.
Packages
A package organizes modules in directories. Review:
Absolute vs relative import concepts.
Why namespaces prevent name collisions.
How package structure affects import paths.
The role of module search paths at a conceptual level.
Do not spend all your review time memorizing obscure package mechanics. For PCAP-style readiness, prioritize understanding what names are available after imports and how module code executes.
Put specific exception handlers before general ones.
Better order
Why
except ValueError: before except Exception:
Specific handler gets a chance to run.
Broad handler first
Makes later specific handlers unreachable or ineffective.
try / except / else / finally decision table
Situation
except runs?
else runs?
finally runs?
No exception in try
No
Yes
Yes
Exception handled by matching except
Yes
No
Yes
Exception not handled
No matching handler
No
Yes, then exception propagates
return inside try
Maybe not
Depends on flow
Yes before function exits
Important: finally is for cleanup logic. It runs even when control flow is leaving the block.
Final review priorities for PCAP-31-03
Prioritize hands-on fluency with:
Predicting output from short Python programs.
Lists, dictionaries, strings, slicing, and mutability.
Function calls, default arguments, scope, lambdas, and iterators.
Import syntax, module namespaces, and package concepts.
Exception hierarchy, handler order, else, finally, raise, and custom exceptions.
File modes and context managers.
Classes, self, attributes, inheritance, overriding, super(), MRO, and special methods.
Next step: work through timed PCAP-31-03 practice questions and explain each answer by tracing state, control flow, and object identity before checking the solution.
Notes and examples
Practice priorities before the real exam
After this Cheat Sheet, use a question bank with original practice questions, topic drills, and detailed explanations. Prioritize practice in this order if time is short:
Priority
Practice focus
Why it matters
1
Output prediction with lists, dictionaries, functions, and scope
High error rate and easy to underestimate
2
Exceptions and file handling
Tests exact control flow and cleanup behavior
3
OOP inheritance and attributes
Requires methodical lookup reasoning
4
Modules and imports
Small syntax differences change available names
5
Strings and slicing
Many questions hide off-by-one or immutability traps
6
Iterators, generators, comprehensions
Lazy evaluation and exhaustion can surprise candidates
Confusing class attributes with instance attributes
Iteration tools
Iterables, iterators, comprehensions, generators
Expecting a generator to restart automatically
Python execution model and object basics
Python questions often test object behavior more than definitions.
Concept
Review rule
Everything is an object
Values have identity, type, and value.
Assignment binds names
x = y makes x refer to the same object as y; it does not copy the object.
Mutability matters
Lists, dictionaries, and sets are mutable. Strings, tuples, numbers, and booleans are immutable.
Identity vs equality
is checks object identity; == checks value equality.
Namespaces
A name is resolved in a namespace; the same spelling can refer to different objects in different scopes.
Notes and examples
Identity, equality, and mutation traps
Expression or pattern
Correct interpretation
a == b
Do a and b have equal values?
a is b
Are a and b the exact same object?
b = a
b now refers to the same object as a.
b = a[:]
For many sequences, creates a shallow copy.
list1.append(x)
Mutates list1 and returns None.
s.upper()
Returns a new string; s is unchanged.
Quick check: if an operation mutates an object in place, be suspicious of assigning its return value. For example, x = my_list.sort() makes x become None.
Defining and calling functions
Feature
Review rule
def name(...):
Creates a function object and binds it to a name.
return value
Exits function and sends value back.
No explicit return
Function returns None.
Positional arguments
Matched by position.
Keyword arguments
Matched by parameter name.
Default parameters
Used when caller omits that argument.
*args
Collects extra positional arguments as a tuple.
**kwargs
Collects extra keyword arguments as a dictionary.
Argument-order rule
A safe ordering model:
Positional parameters
Defaulted parameters
*args
Keyword-only parameters, if used
**kwargs
When calling a function:
Positional arguments generally come before keyword arguments.
Do not provide the same parameter twice.
A required parameter must receive a value.
Keyword names must match parameter names unless captured by **kwargs.
Scope and name resolution
Python uses the LEGB rule:
Level
Meaning
Local
Names assigned inside the current function
Enclosing
Names in enclosing function scopes
Global
Names at module level
Built-in
Python built-in names
Important scope rules:
Reading a global name from inside a function is allowed.
Assigning to a name inside a function normally makes it local.
If a local assignment exists, reading that name before assignment can cause UnboundLocalError.
global tells Python that assignment should target the module-level name.
nonlocal targets a name in an enclosing function scope.
Lambda, higher-order functions, and comprehensions
Feature
Review point
lambda
Creates a small anonymous function with one expression.
map()
Applies a function to items; returns an iterator.
filter()
Keeps items for which function is truthy; returns an iterator.
List comprehension
Builds a list from an expression and iterable.
Generator expression
Lazy expression; produces items as needed.
Candidate trap: in Python 3, functions such as map() and filter() produce iterators, not lists. If a question expects a list, conversion may be needed with list(...).
__name__ and script behavior
The variable __name__ is:
"__main__" when the file is run directly.
The module’s name when imported.
Common pattern: if __name__ == "__main__": guards code that should run only when the module is executed as a script, not when imported.
Selected standard-library areas to recognize
Module
Common purpose
math
Mathematical functions and constants
random
Pseudorandom choices and numbers
datetime
Dates and times
os
Operating-system interactions
sys
Interpreter-related values and functions
platform
Platform information
json
JSON serialization and parsing
Practice questions often test whether you recognize the purpose and basic use pattern of standard modules rather than deep memorization of every function.
File-opening basics
Mode
Meaning
"r"
Read text file
"w"
Write text file; truncates existing file
"a"
Append text
"x"
Create new file; fail if it exists
"b"
Binary mode modifier
"t"
Text mode modifier
"+"
Updating: reading and writing
Notes and examples
Use context managers when possible: with open(...) as f: ensures the file is closed after the block.
File method review
Method
Use
read()
Reads entire file or specified size
readline()
Reads one line
readlines()
Reads all lines into a list
Iterating over file object
Reads line by line
write(text)
Writes string and returns number of characters written
writelines(iterable)
Writes strings from iterable; does not automatically add newlines
close()
Closes the file
Common traps:
Opening with "w" can erase existing content.
read() consumes from the current file position.
Newline characters may remain when reading lines.
Text mode expects strings; binary mode expects bytes-like objects.
writelines() does not insert separators or newline characters for you.
Class and object fundamentals
Term
Meaning
Class
Blueprint for objects
Object / instance
A concrete object created from a class
Attribute
Data associated with an object or class
Method
Function associated with a class
self
Conventional name for the current instance
Constructor initializer
__init__ initializes a new instance after creation
Instance vs class attributes
Attribute type
Where stored
Shared?
Instance attribute
On each object
No
Class attribute
On the class
Yes, unless shadowed by instance attribute
Candidate trap: mutable class attributes can be shared by all instances. If each object needs its own list, create it as an instance attribute inside __init__.
Encapsulation conventions
Python uses conventions more than strict access controls.
Name style
Convention
name
Public
_name
Internal-use convention
__name
Name-mangled to reduce accidental collision in subclasses
__name__
Special “dunder” method or attribute
Do not describe Python’s underscores as absolute privacy. They are primarily conventions and name-mangling mechanisms.
Comprehensions
Form
Produces
[expr for x in iterable]
List
{expr for x in iterable}
Set
{k: v for x in iterable}
Dictionary
(expr for x in iterable)
Generator expression
Review filter placement:
[x for x in nums if x > 0] keeps only positive values.
[x * 2 for x in nums] transforms every value.
[x * 2 for x in nums if x > 0] filters first by the if, then transforms kept values.
Nested comprehensions are easy to misread. Translate them into ordinary loops if needed.
Common PCAP-31-03 mistake patterns
Syntax and indentation
Mistake
Correction
Missing colon after if, for, while, def, class, try, except
Compound statements need :.
Incorrect indentation
Blocks are defined by indentation.
Mixing tabs and spaces
Avoid; can produce indentation errors.
Assuming braces define blocks
Python uses indentation, not braces.
Notes and examples
Type and conversion mistakes
Mistake
Correction
Adding string and integer directly
Convert explicitly with str() or int() as appropriate.
Expecting input() to return a number
input() returns a string.
Confusing list("abc") with ["abc"]
The first gives individual characters.
Expecting bool("False") to be false
Non-empty strings are truthy.
Mutability mistakes
Mistake
Correction
Thinking assignment copies a list
Assignment binds another name to the same list.
Expecting slicing to deep-copy nested lists
Slicing creates a shallow copy.
Using mutable default arguments
Use None and create inside function.
Sorting a list and assigning the result
list.sort() returns None; use sorted() for a new list.
Scope mistakes
Mistake
Correction
Assigning to global name inside function without global
Creates a local name by default.
Reading local before assignment
Can raise UnboundLocalError.
Shadowing built-ins like list or str
Avoid using built-in names as variables.
Exception mistakes
Mistake
Correction
Catching Exception before ValueError
Put specific handlers first.
Assuming finally runs only on errors
It runs regardless.
Assuming else runs after an exception is handled
else runs only if no exception occurred in try.
Quick decision rules for exam questions
Use these fast checks when answering code-based questions.
If the question involves…
Ask yourself…
Assignment
Are two names pointing to the same object?
A list or dictionary
Is it being mutated in place?
A method call
Does this method return a value or mutate and return None?
A function
What is returned if no return executes?
Defaults
Was the default object created once at definition time?
Scope
Is the name local, enclosing, global, or built-in?
Imports
Which exact name is available after the import statement?
Exceptions
Which handler matches first? Does finally run?
Inheritance
Which method or attribute is found first?
Iterators
Has the iterator already been consumed?
Strings
Is a new string returned rather than modifying the original?
Dictionaries
Is membership checking keys or values?
Final readiness check
You are closer to ready for PCAP-31-03 when you can:
Explain the difference between equality and identity.
Predict the result of list mutation through multiple references.
Trace function calls with positional, keyword, default, *args, and **kwargs.
Apply LEGB without guessing.
Explain when loop else, tryelse, and finally execute.
Identify what each import form makes available.
Distinguish class attributes from instance attributes.
Follow inheritance and method overriding.
Read and reason about file modes and common file methods.
Solve timed original practice questions without relying on trial-and-error execution.