Advanced Python Mastery
Designed for working programmers who want to take their
understanding to a whole new level, this one-of-a-kind course dives
into what really makes Python tick. This course is especially
appropriate for software developers building large applications,
frameworks, and libraries for use by others.
Note: This course is NOT recommended for programmers who are new to Python.
You might consider the Practical Python Programming course
instead.
Syllabus
The course is taught over four days.
- Python Review (Optional).
An accelerated review of the Python language focused on features
that you should already know. Covers the basic language statements, program
structure, common datatypes, functions, exceptions, modules, and classes.
- Idiomatic Data Handling. An in-depth look at data handling
and data structures. A major focus of this section is on Python's
built-in container types (tuples, lists, sets, dicts, etc.) with an
eye towards studying their performance properties and resource
use. Also covers important programming data-processing idioms such as
the use of list comprehensions and generator expressions.
- Classes and Objects.
A review of the class statement and how to define new objects in Python.
A major focus is on how to properly encapsulate data,
and when to use features such as static methods, class methods, and properties.
Concludes with a review of some common object-oriented programming techniques
and advanced topics including mixin classes and weak references.
- Inside Python Objects. A look at how the
Python object system is put together under the covers. Major topics
include instance and class representation, attribute binding, inheritance,
attribute access methods, and the descriptor protocol.
- Testing, Logging, and Debugging.
Learn how to test and debug your code. Covers the doctest, unittest, and logging modules. Information on assertions, optimized run mode, the debugger,
and profiler is also presented.
- Working with Code.
A detailed look at more advanced aspects of Python functions.
Topics include variable argument functions, anonymous functions (lambda),
scoping rules, nested functions, function introspection, closures, delayed-evaluation, and partial function application.
- Metaprogramming.
Finally understand the secret techniques used by the Python
framework builders. This section covers features that allow
you to manipulate code. Topics include decorators, class decorators,
context managers, and metaclasses.
- Iterators, Generators, and Coroutines.
Covers the iteration protocol, generator functions, and coroutines. A
major focus of this section is on applying generators and coroutines to
problems in data processing. You will learn how to apply these features
to large data files and data streams.
- Modules and Packages.
This section covers details related to using modules and packages to organize larger programs.
A major focus is understanding the underlying behavior of the import statement and some
of the more tricky issues related to organizing packages.
Instruction Format
The course is designed to be taught on a 9-5 schedule with a one hour
lunch break. This course consists of both lecture slides and hands-on programming
exercises, with most of the time spent programming. Participants should plan
on spending 4-5 hours each day working on exercises.
Prerequisites
This course assumes a working knowledge of Python programming. Students should already know
know to write and debug programs and be familiar with core language features such as
functions, classes, modules, and the most commonly used modules in the standard library.
2018 Pricing and Scheduling
The cost of a 4-day course for 12 students is $16000 plus instructor travel expenses.
Additional students can be added to the course for $1200/student.
Courses are typically scheduled 8-20 weeks in advance and may be taught on-site
or in virtual online format.
If you only have a few developers to train, you might consider sending them
to a course in Chicago instead.
Contact
For more information, you can contact me by sending email to "dave" at "dabeaz.com".
More Information
Click here for more information on other
training options.