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). Class time runs roughly 50% hands-on, blending focused lecture and live demonstrations with practical 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 and craft polished, production-ready scripts.
- Extend and enhance classes with advanced features and apply Python's metaprogramming features with confidence.
- Author clean, maintainable modules and packages.
- Build graphical interfaces for desktop applications.
- Write and run unit tests with PyTest.
- Build multithreaded and multi-process applications.
- Talk to network services and remote systems, and query relational databases from Python.
- Read and produce XML, CSV, and JSON data, and work with additional data types and type hints 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