O'Reilly logo
live online training icon Live Online training

Python for Applications: Beyond Scripts

Everything you need to know to get started

Aaron Maxwell

Compared to small scripts, large-scale applications need thoughtfully organized modules, expressive logging, intelligent error management, and a different approach. Otherwise, the whole effort collapses from its crushing complexity.

Join expert Pythonista Aaron Maxwell to explore modern Python’s key features for successful, graceful, and effective development of large-scale software. Over two three-hour sessions, you'll learn how to write and modify larger Python applications quickly and efficiently - without getting bogged down in those complex, baffling bugs that take all day to fix. You'll learn how to leverage Python’s rich error model; keys for leveraging test-driven development and test automation; and how to intelligently organize larger code bases so that they can be written in parallel by several engineers at once (without anyone stepping on anyone's toes).

What you'll learn-and how you can apply it

By the end of this live, online course, you’ll understand:

  • The different needs of robust, mission-critical Python applications compared to one-shot scripts
  • How to successfully develop increasingly complex software so it doesn't collapse under its own complexity
  • Principles of writing Python for easier automation and code reuse
  • Python’s mechanisms for error management and delegation of error handling
  • The techniques, principles, and best practices for useful logging

And you’ll be able to:

  • Leverage Pythonic features to improve reliability, maintainability, and robustness
  • Organize your codebase so it can be worked on by a team of developers in parallel
  • Write more powerful Python code, packaged in ways more easily reusable by other developers
  • Use higher-level abstractions to produce reusable code and reduce complexity and errors
  • Write Python code that’s concise, readable, and highly maintainable
  • Advise your teammates on potently powerful Python patterns and crucial best practices

This training course is for you because...

  • You’re a web developer ready to take on more complex and extensive web applications.
  • You’re a QA engineer who wants to develop robust, higher-level test automation frameworks.
  • You’re a data scientist ready to build sophisticated and reliable data engineering applications.
  • You’re a tech lead or engineering manager who wants to improve code reuse and organization within your team and increase the velocity of your sprints.
  • You want to improve your Python knowledge to ace an interview and land that dream job.
  • You’re a software engineer who cares about robust, reliable, and maintainable code and wants to see a wider positive impact from your coding efforts.


  • Experience writing Python scripts and small programs for practical work situations
  • Basic mastery of Python data structures (like dicts and lists), writing simple classes in Python, and object-oriented programming principles
  • Experience writing mid-sized and larger applications in any language (useful but not required)

Required materials and setup:

A machine with Python 3.5+ (recommended) or Python 2.7 installed

Recommended Preparation:

Introduction to Python

Intermediate Python: Introduction

Further Learning:

Python Cookbook, 3rd edition (book)

Become Fluent in Python (learning path)

About your instructor

  • Aaron Maxwell is author of the book "Powerful Python: The Most Impactful Patterns, Features, and Development Strategies Modern Python Provides." As a software engineer, he has worked in devops, test automation, and machine learning, and now divides his time between coding, writing, and teaching


The timeframes are only estimates and may vary according to how the class is progressing

Day 1

  • Introduction & course logistics
  • Python's Logging System
  • Logging Design Patterns
  • Python's Exception Model
  • Exception Patterns & Anti-patterns
  • Wrap-up and Q&A

Day 2

  • Introduction
  • Module organization
  • How to evolve reusable Python modules as requirements change
  • Automated Tests and Unit Tests
  • Test-driven development
  • Building command-line programs
  • Wrap-up and Q&A

THROUGHOUT: Live Q&A and in-class coding exercises.