Use Type Hints with the Python `typing` Module
Learn how to use Python's typing module to add type hints for lists, dictionaries, unions, optionals, and generics.
Learn Python programming from scratch
Learn how to use Python's typing module to add type hints for lists, dictionaries, unions, optionals, and generics.
Learn how to use Python's functools module for higher-order functions, caching, partial application, and function composition.
Learn how to use Python's functools.cache and lru_cache decorators to speed up repeated function calls through memoization.
Learn how to use Python's urllib module to make HTTP GET and POST requests, handle responses, and manage errors.
Learn how to use Python's cProfile module to profile your code, find performance bottlenecks, and measure function call statistics.
Learn how to use Python's pdb module to set breakpoints, step through code, inspect variables, and debug programs interactively.
Learn the most common mistakes developers make when using Python's standard library and how to avoid them.
Learn how to build a complete, real-world command-line tool in Python using the standard library: argparse, logging, pathlib, sqlite3, and more.
Learn what concurrency means in Python, the difference between threads, processes, and async, and when to use each approach for faster, more efficient programs.
Learn how Python threading works under the hood, including thread lifecycle, the GIL interaction during I/O, daemon threads, and the threading module architecture.
Learn how to create, start, join, and manage Python threads with practical examples including thread pools, exception handling, and return value collection.
Learn how to use threading.Lock and RLock to prevent race conditions, protect shared data, and write correct multithreaded Python code.