Computer Science
Grade 12
20 min
Review of Python Basics
Review of Python Basics
Tutorial Preview
1
Introduction & Learning Objectives
Learning Objectives
Construct complex list, set, and dictionary comprehensions to replace verbose for-loops.
Define and utilize anonymous (lambda) functions as arguments for higher-order functions like `map`, `filter`, and `sorted`.
Implement generator functions using the `yield` keyword to create memory-efficient iterators for large datasets.
Write and apply simple decorator functions to extend the functionality of existing functions without modifying their source code.
Employ the `*args` and `**kwargs` syntax to create flexible functions that accept a variable number of positional and keyword arguments.
Utilize `try...except...else...finally` blocks to build robust error-handling mechanisms in complex applications.
Ever wonder how Python pros write incredibly concise, powe...
2
Key Concepts & Vocabulary
TermDefinitionExample
List ComprehensionA concise, syntactic construct for creating a list based on existing lists or other iterables. It is often more compact and faster than using a standard for-loop.squares_of_evens = [x**2 for x in range(10) if x % 2 == 0]
# Result: [0, 4, 16, 36, 64]
Lambda FunctionAn anonymous, inline function defined with the `lambda` keyword. It is restricted to a single expression and is useful for short, throwaway functions, especially as arguments to higher-order functions.add = lambda x, y: x + y
result = add(5, 3) # result is 8
GeneratorA special type of iterator, created by a function using the `yield` keyword. It produces a sequence of values over time, pausing its state between calls, which makes it highly memory-efficient for large or infinite sequences.d...
3
Core Syntax & Patterns
List/Set/Dict Comprehension Syntax
[expression for item in iterable if condition]
Use this pattern to create a new list by applying an expression to each item in an iterable, optionally filtering items with a condition. This is more efficient and readable than a standard for-loop with an `append`. For sets, use `{...}`, and for dictionaries, use `{key_expr: val_expr ...}`.
Decorator Pattern
@decorator_function
def my_function():
pass
This is syntactic sugar for `my_function = decorator_function(my_function)`. Apply a decorator using the `@` symbol above a function definition to wrap it with additional logic, such as logging, timing, or access control.
Generator Function Structure
def my_generator():
for i in range(n):
yield i
Use the `yield` keyword i...
4 more steps in this tutorial
Sign up free to access the complete tutorial with worked examples and practice.
Sign Up Free to ContinueSample Practice Questions
Challenging
A decorator function's inner wrapper is missing its `return` statement, as shown: `def my_decorator(func): def wrapper(*args, **kwargs): result = func(*args, **kwargs); print('Done.'); # Missing return result; return wrapper`. What happens when you call a decorated function that should return a value (e.g., `add(2, 3)` which should return 5)?
A.It will raise a `SyntaxError` because the return is missing.
B.The decorated function will execute, but the call will return `None`.
C.The original function's return value will be passed through automatically.
D.It will result in an infinite loop.
Challenging
What is the output of `sum(n * n for n in range(4))`?
A.`TypeError` because `sum` requires a list.
B.6
C.30
D.14
Challenging
How can the 'late binding' lambda loop `funcs = [lambda: i for i in range(3)]` be corrected to produce the intended output of `[0, 1, 2]` when the functions are called?
A.By using a default argument to capture the value of `i` at creation time: `[lambda i=i: i for i in range(3)]`
B.By converting `i` to a string: `[lambda: str(i) for i in range(3)]`
C.By calling the lambda immediately: `[(lambda: i)() for i in range(3)]`
D.It cannot be fixed; a standard `def` function must be used inside the loop.
Want to practice and check your answers?
Sign up to access all questions with instant feedback, explanations, and progress tracking.
Start Practicing Free