Section 1: Python Primer
This section serves as a quick introduction to the Python programming language or as a reminder for those who've been away from the language for a while.
- The Course Overview
- Python Basic Syntax and Block Structure
- Built-in Data Structures and Comprehensions
- First-Class Functions and Classes
- Extensive Standard Library
- New in Python 3.5
Section 2: Setting Up
Provide the basics to get started in a functioning environment.
- Downloading and Installing Python
- Using the Command-Line and the Interactive Shell
- Installing Packages with pip
- Finding Packages in the Python Package Index
Section 3: Making a Package
This section is a step-by-step guide to create a new Python package.
- Creating an Empty Package
- Adding Modules to the Package
- Importing One of the Package's Modules from Another
- Adding Static Data Files to the Package
Section 4: Basic Best Practices
This section covers simple things that are big labor savers in the long run.
- PEP 8 and Writing Readable Code
- Using Version Control
- Using venv to Create a Stable and Isolated Work Area
- Getting the Most Out of docstrings 1: PEP 257 and docutils
- Getting the Most Out of docstrings 2: doctest
Section 5: Making a Command-Line Utility
This section describes how to turn a package into a program that can be run from the command line.
- Making a Package Executable via python -m
- Handling Command-Line Arguments with argparse
- Interacting with the User
- Executing Other Programs with Subprocess
- Using Shell Scripts or Batch Files to Run Our Programs
Section 6: Parallel Processing
This section describes how to spread computational tasks across multiple processors.
- Using concurrent.futures
- Using Multiprocessing
Section 7: Coroutines and Asynchronous I/O
This section describes Python's asynchronous event loop and how to use it.
- Understanding Why This Isn't Like Parallel Processing
- Using the asyncio Event Loop and Coroutine Scheduler
- Waiting for Data to Become Available
- Synchronizing Multiple Tasks
- Communicating Across the Network
Section 8: Metaprogramming
This section describes various approaches to metaprogramming and programmable syntax in Python.
- Using Function Decorators
- Function Annotations
- Class Decorators
- Context Managers
Section 9: Unit Testing
This section describes automated unit testing in Python.
- Understanding the Principles of Unit Testing
- Using the unittest Package
- Using unittest.mock
- Using unittest's Test Discovery
- Using Nose for Unified Test Discover and Reporting
Section 10: Reactive Programming
This section describes the concepts behind reactive programming and introduces the RxPY reactive programming framework.
- What Does Reactive Programming Mean?
- Building a Simple Reactive Programming Framework
- Using the Reactive Extensions for Python (RxPY)
Section 11: Microservices
This section talks about what microservices are and why they are useful, and introduces creating microservices using either Flask or nameko.
- Microservices and the Advantages of Process Isolation
- Building a High-Level Microservice with Flask
- Building a Low-Level Microservice with nameko
Section 12: Extension Modules and Compiled Code
This section talks about when it makes sense to rewrite part of a program in a compiled language and introduces ctypes and cython.
- Advantages and Disadvantages of Compiled Code
- Accessing a Dynamic Library Using ctypes
- Interfacing with C Code Using Cython