Updated June 2026Advanced Python Programming
Class Duration
35 hours of live training delivered over 5 days.
Student Prerequisites
- Some practical Python experience is required
- Comfortable working knowledge of your operating system of choice (Linux, macOS, or Windows)
- This course assumes you already know the fundamentals - they are not revisited beyond a short refresher
- Students who need to build up those fundamentals first should consider Introduction to Python and Intermediate Python
Target Audience
This is an intermediate-and-beyond Python course aimed at developers who already write Python and want to take it further - whether that's powering web projects, automating routine work, or building production-grade tools and scripts.
Description
Advanced Python Programming is a hands-on course that takes experienced Python developers from intermediate fundamentals into the deeper waters of enterprise-grade development. Across five days, you'll work through OS-level scripting, graphical user interfaces, modular package design, unit testing, class design, network programming, database access, XML and JSON processing, and more. This is a working programmer's course - an in-depth tour of how the language is actually used in production, not a syntax-and-grammar walkthrough. The course is taught on a current Python release (3.13+, with 3.14 features highlighted where relevant).
The course runs roughly 50% hands-on, blending focused lecture and live demonstrations with practical lab exercises and group discussion. Sessions are led by working practitioners who pull examples and patterns straight from their day-to-day engineering work - so what you learn in class lines up with what you'll actually ship at the office.
Learning Outcomes
- Tap into OS-level services from Python
- Extend and enhance classes with advanced features
- Build graphical interfaces for desktop applications
- Apply Python's metaprogramming features with confidence
- Author clean, maintainable modules and packages
- Write and run unit tests with PyTest
- Build multithreaded and multi-process applications
- Talk to network services and remote systems
- Craft polished, production-ready scripts
- Query relational databases from Python
- Read and produce XML, CSV, and JSON data
- Work with additional data types if time permits
- Apply type hints for clearer intent and contracts if time permits
Training Materials
Comprehensive courseware is distributed online at the start of class. All students receive a downloadable MP4 recording of the training.
Software Requirements
- Permission to install Python 3.13 or later (installing with
uv is demonstrated in class) - Text editor or IDE (VS Code with the Python extension recommended)
- Permission to install Python packages, including PyQt6, pytest, and requests (SQLite, used for database labs, ships with Python)
- Terminal/command-line access on Linux, macOS, or Windows
- If a local environment is not possible, a cloud-based environment can be provided
Training Topics
Python Quick Refresher
- Built-in data types
- Lists and tuples
- Dictionaries and sets
- Program structure
- Files and console I/O
- If statement
- for and while loops
Pythonic Programming
- The Zen of Python
- Tuples
- Advanced unpacking
- Sorting
- Lambda functions
- List comprehensions
- Generator expressions
- String formatting
OS Services
- The os and os.path modules
- Environment variables
- Launching external commands with subprocess
- Walking directory trees
- Paths, directories, and filenames with pathlib
- Working with file systems
Dates and Times
- Basic date and time classes
- Different time formats
- Converting between formats
- Formatting dates and times
- Parsing date/time information
Binary Data
- What is binary data?
- Binary vs text
- Using the struct module
Functions, Modules, and Packages
- Four types of function parameters
- Four levels of name scoping
- Single/multi dispatch
- Relative imports
- Using init effectively
- Documentation best practices
- Class/static data and methods
- Inheritance (or composition)
- Abstract base classes
- Implementing protocols (context, iterator, etc.) with special methods
- Implicit properties
- globals() and locals()
- Working with object attributes
- The inspect module
- Callable classes
- Decorators
- Monkey patching
- Analyzing programs with linters (pylint, ruff)
- Using the debugger
- Profiling code
- Testing speed with benchmarking
Unit Testing with PyTest
- What is a unit test?
- Writing tests
- Working with fixtures
- Test runners
- Mocking resources
Database Access
- The DB API
- Available interfaces
- Connecting to a server
- Creating and executing a cursor
- Fetching data
- Parameterized statements
- Using metadata
- Transaction control
- ORMs and NoSQL overview
GUI Programming with PyQt
- PyQt6 overview
- Qt 6 architecture
- Using Qt Designer
- Standard widgets
- Event handling
- Extras
Network Programming
- Built-in classes
- Using requests
- Grabbing web pages
- Sending email
- Working with binary data
- Consuming RESTful services
- Remote access (SSH)
Multiprogramming
- The threading module
- Sharing variables
- The queue module
- The multiprocessing module
- Creating pools
- The GIL today, and the free-threaded build (PEP 703/779)
- About async programming with asyncio
Scripting for System Administration
- Running external programs
- Parsing arguments
- Creating filters to read text files
- Logging
Serializing Data - XML and JSON
- Working with XML
- XML modules in Python
- Getting started with ElementTree
- Parsing XML
- Updating an XML tree
- Creating a new document
- About JSON
- Reading JSON
- Writing JSON
- Reading/writing CSV files
- YAML, other formats as time permits
Advanced Data Handling (time permitting)
- Discover the collections module
- Use defaultdict, Counter, and namedtuple
- Create dataclasses
- Store data offline with pickle
Type Hinting (time permitting)
- Annotate variables
- Learn what type hinting does NOT do
- Use the typing module for detailed type hints
- Understand union and optional types
- Write stub interfaces