Spaces:
Sleeping
Sleeping
| # Python Programming Examples and Patterns | |
| ## Basic Data Structures | |
| ### List Comprehensions | |
| # Traditional way | |
| squares = [] | |
| for i in range(10): | |
| squares.append(i**2) | |
| # List comprehension | |
| squares = [i**2 for i in range(10)] | |
| even_squares = [i**2 for i in range(10) if i % 2 == 0] | |
| ### Dictionary Comprehensions | |
| # Create dictionary from lists | |
| names = ['Alice', 'Bob', 'Charlie'] | |
| ages = [25, 30, 35] | |
| people = {name: age for name, age in zip(names, ages)} | |
| # Filter dictionary | |
| adults = {name: age for name, age in people.items() if age >= 18} | |
| ## Object-Oriented Programming | |
| ### Class with Properties | |
| class Student: | |
| def __init__(self, name, age): | |
| self._name = name | |
| self._age = age | |
| def name(self): | |
| return self._name | |
| def name(self, value): | |
| if not isinstance(value, str): | |
| raise ValueError("Name must be a string") | |
| self._name = value | |
| def age(self): | |
| return self._age | |
| def age(self, value): | |
| if not isinstance(value, int) or value < 0: | |
| raise ValueError("Age must be a positive integer") | |
| self._age = value | |
| ### Singleton Pattern | |
| class DatabaseConnection: | |
| _instance = None | |
| def __new__(cls): | |
| if cls._instance is None: | |
| cls._instance = super().__new__(cls) | |
| cls._instance.connection = None | |
| return cls._instance | |
| def connect(self): | |
| if not self.connection: | |
| self.connection = "Connected to database" | |
| return self.connection | |
| ## Functional Programming | |
| ### Higher-Order Functions | |
| def apply_operation(func, numbers): | |
| return [func(num) for num in numbers] | |
| def square(x): | |
| return x ** 2 | |
| def cube(x): | |
| return x ** 3 | |
| # Usage | |
| numbers = [1, 2, 3, 4, 5] | |
| squared = apply_operation(square, numbers) | |
| cubed = apply_operation(cube, numbers) | |
| ### Lambda Functions | |
| # Simple lambda | |
| add = lambda x, y: x + y | |
| # Lambda with map | |
| numbers = [1, 2, 3, 4, 5] | |
| doubled = list(map(lambda x: x * 2, numbers)) | |
| # Lambda with filter | |
| evens = list(filter(lambda x: x % 2 == 0, numbers)) | |
| ## Error Handling | |
| ### Context Managers | |
| class FileManager: | |
| def __init__(self, filename, mode): | |
| self.filename = filename | |
| self.mode = mode | |
| self.file = None | |
| def __enter__(self): | |
| self.file = open(self.filename, self.mode) | |
| return self.file | |
| def __exit__(self, exc_type, exc_val, exc_tb): | |
| if self.file: | |
| self.file.close() | |
| # Usage | |
| with FileManager('test.txt', 'w') as f: | |
| f.write('Hello, World!') | |
| ### Custom Exceptions | |
| class ValidationError(Exception): | |
| def __init__(self, message, field=None): | |
| self.message = message | |
| self.field = field | |
| super().__init__(self.message) | |
| def validate_email(email): | |
| if '@' not in email: | |
| raise ValidationError("Invalid email format", "email") | |
| if '.' not in email.split('@')[1]: | |
| raise ValidationError("Invalid domain", "email") | |
| return True | |
| ## Data Processing | |
| ### CSV Processing | |
| import csv | |
| def read_csv_data(filename): | |
| data = [] | |
| with open(filename, 'r') as file: | |
| reader = csv.DictReader(file) | |
| for row in reader: | |
| data.append(row) | |
| return data | |
| def write_csv_data(filename, data, fieldnames): | |
| with open(filename, 'w', newline='') as file: | |
| writer = csv.DictWriter(file, fieldnames=fieldnames) | |
| writer.writeheader() | |
| writer.writerows(data) | |
| ### JSON Processing | |
| import json | |
| def load_json_config(filename): | |
| try: | |
| with open(filename, 'r') as file: | |
| return json.load(file) | |
| except FileNotFoundError: | |
| return {} | |
| except json.JSONDecodeError: | |
| return {} | |
| def save_json_config(filename, data): | |
| with open(filename, 'w') as file: | |
| json.dump(data, file, indent=2) | |
| ## Algorithm Implementations | |
| ### Binary Search | |
| def binary_search(arr, target): | |
| left, right = 0, len(arr) - 1 | |
| while left <= right: | |
| mid = (left + right) // 2 | |
| if arr[mid] == target: | |
| return mid | |
| elif arr[mid] < target: | |
| left = mid + 1 | |
| else: | |
| right = mid - 1 | |
| return -1 | |
| ### Quick Sort | |
| def quicksort(arr): | |
| if len(arr) <= 1: | |
| return arr | |
| pivot = arr[len(arr) // 2] | |
| left = [x for x in arr if x < pivot] | |
| middle = [x for x in arr if x == pivot] | |
| right = [x for x in arr if x > pivot] | |
| return quicksort(left) + middle + quicksort(right) | |
| ## Web Development | |
| ### Flask Route Example | |
| from flask import Flask, request, jsonify | |
| app = Flask(__name__) | |
| def get_users(): | |
| users = [ | |
| {'id': 1, 'name': 'Alice', 'email': 'alice@example.com'}, | |
| {'id': 2, 'name': 'Bob', 'email': 'bob@example.com'} | |
| ] | |
| return jsonify(users) | |
| def create_user(): | |
| data = request.get_json() | |
| if not data or 'name' not in data or 'email' not in data: | |
| return jsonify({'error': 'Missing required fields'}), 400 | |
| # Process user creation | |
| new_user = { | |
| 'id': 3, # In real app, generate unique ID | |
| 'name': data['name'], | |
| 'email': data['email'] | |
| } | |
| return jsonify(new_user), 201 | |
| ## Testing | |
| ### Unit Test Example | |
| import unittest | |
| class Calculator: | |
| def add(self, a, b): | |
| return a + b | |
| def subtract(self, a, b): | |
| return a - b | |
| def multiply(self, a, b): | |
| return a * b | |
| def divide(self, a, b): | |
| if b == 0: | |
| raise ValueError("Cannot divide by zero") | |
| return a / b | |
| class TestCalculator(unittest.TestCase): | |
| def setUp(self): | |
| self.calc = Calculator() | |
| def test_add(self): | |
| self.assertEqual(self.calc.add(3, 5), 8) | |
| self.assertEqual(self.calc.add(-1, 1), 0) | |
| def test_divide_by_zero(self): | |
| with self.assertRaises(ValueError): | |
| self.calc.divide(10, 0) | |
| if __name__ == '__main__': | |
| unittest.main() | |