Participants must have completed the Intensive Introduction and Intermediate Python courses or have requisite knowledge. Participants should be proficient at:
- Creating non-trivial Python programs
- Core containers and their principal use cases
- The iterator protocol and how generators work
- Threading and queue
- How to build compete applications with multiple front-ends (http, xmlrpc, argparse, and cmd)
- Context managers and how they are created
- Abstract base classes, the collections module, and the sqlite3 module
In this intensive four-day course, participants will achieve the mastery of Python 3 necessary to become a leader, problem solver, and architect. You will develop skills with Python's most advanced tools including metaclasses, descriptors, and interfaces with C and become knowledgeable about how to create an effective Python programming environment for (using PIP, virtualenv, automated testing, and popular third-party modules).
This course is designed for Engineers, Developers, Testers, QA, and Product Managers.
Upon completion of this course, participants will be able to:
- Develop skills with Python's most advanced tools: Descriptors, Metaclasses, Advanced Decorators, Optimization, Customized String Formatting, and Import Hooks
- Learn to understand, fix, and explain the most common code mistakes and misconceptions
- Read and emulate examples of professional quality code in the standard library and third-party modules
- Learn about alternative Python implementations including PyPy and Jython.
- Practice the most common and useful styles of architecting Python programs
- Interface to non-python programs using CTypes, CallDLL, C extensions, SWIG, messaging, and various styles of IPC.
- Bring your own issues and code samples to class for discussion and code review.
Study performance characteristics of Python's core containers
Review Python's tools for OOP problem solving (class local references, slots, property, class methods, class variables, and static methods)
Discuss Python's API design idioms
Implement a spellchecker using a Bloom Filter
Use chains for dictionaries to learn and model the details of Python's object system
Demonstrate effective use of code generation and evaluation
Study proper subclassing technique and design principles (Dependency Injection, OpenClosed Principle, Liskov Substitution Principle, etc)
Demonstrate how to subclass builtin types
Learn the descriptor protocol and how it affects the language as a whole
Explore asynchronous programming techniques such as the IO loop in tornado
Compare and contrast the many ways to create callables (including lambda, classes, and the operator module)
Learn all the special methods associates with square brackets and the dot (getitem, missing, setitem, delitem, getattribute, getattr, setattr, delattr)
Make a small game program using a AI-style constraint solver. Explore optimization techniques using functional programming. Create further optimizations by creating a C extension
Submit your code for review and learn to do code review for others
Learn about tools for managing the Python development environment including: pip, virtualenv, virtualenv wrapper, pyflakes, py.test, and setup tools
Work exercises involving multiprocessing, bytearrays, bitarrays, and Cython.
Learn the details of class creation and how to modify them using metaclasses and class decorators