Python Programming
Essential Concepts, Patterns, and Best Practices
1. Python Data Structures
Structure Mutable Ordered Duplicates Syntax Example
List Yes Yes Yes x = [1, 2, 3]
Tuple No Yes Yes x = (1, 2, 3)
Set Yes No No x = {1, 2, 3}
Dict Yes Yes (3.7+) Keys: No x = {'a': 1}
FrozenSet No No No x = frozenset({1,2})
2. Key Built-in Functions
2.1 Functional Programming Tools
• map(func, iterable) — applies function to every item; returns iterator
• filter(func, iterable) — keeps items where function returns True
• zip(*iterables) — pairs elements from multiple iterables together
• enumerate(iterable) — yields (index, value) pairs
• sorted(iterable, key=..., reverse=False) — returns new sorted list
• any(iterable) / all(iterable) — True if any/all elements are truthy
3. Object-Oriented Programming in Python
3.1 Class Structure
Python supports full OOP with classes, inheritance, encapsulation, and polymorphism.
class Animal:
def __init__(self, name, species):
[Link] = name
[Link] = species
def speak(self): # Method to override
raise NotImplementedError
class Dog(Animal): # Inheritance
def speak(self):
return f"{[Link]} says Woof!"
4. Python Design Patterns
Pattern Category Purpose Python Implementation
Singleton Creational One instance only __new__ method or module-
level
Factory Creational Create objects without Class method or function
specifying class
Decorator Structural Add behavior to objects @decorator syntax
dynamically
Observer Behavioral Notify dependents of state Event listeners, callbacks
changes
Strategy Behavioral Swap algorithms at runtime Pass functions as arguments
Context Structural Manage resources safely __enter__ and __exit__
Manager
5. Exception Handling Best Practices
• Catch specific exceptions rather than broad Exception catches
• Use finally block for cleanup code (file closing, DB connections)
• Create custom exceptions by subclassing Exception class
• Use context managers (with statement) for automatic resource management
• Log exceptions with traceback information for debugging
• Re-raise exceptions with raise from to preserve original context
6. Performance Optimization Tips
• Use list comprehensions instead of for loops for simple transformations
• Use generators for large datasets to reduce memory consumption
• Profile code with cProfile before optimizing — avoid premature optimization
• Use slots in classes to reduce memory overhead for many instances
• Prefer local variables over global in performance-critical loops
• Use [Link] and Counter for frequency counting
© 2024 | Python Programming Reference | For Educational Use