Length: 4 days (32 hours)
Description:This course introduces experienced Python programmers to some of the language’s more advanced features. If you have been using Python for more than six months, and want to understand and explore the more advanced features of the language — making your programs more expressive and powerful — then this course will help you.
This is the course that some of the world’s largest and best-known companies (e.g., Apple, Cisco, Western Digital, and VMWare) invite me to teach, again and again, to help their Python programmers to improve, after they have been using Python for some time.
Besides deep discussions of functional and object-oriented techniques, the course discusses advanced data structures, inner functions, functional programming techniques, a deep dive into Python’s object system, iterators, generators, and decorators, testing, and multiprocessing (processes and threads). The course includes a large number of exercises for hands-on practice, as well as live demos and the opportunity for questions.
Participants receive PDF copies of the slides, files with the answers to exercises, as well as an IPython notebook from all live-coding demos.
This course, like all of my courses, can be given either in-person or virtually. Contact me for availability and pricing, but be warned that my time tends to fill up months in advance.
- Deep dive into basic Python data structures
- Jupyter notebook
- Advanced data structures
- Function objects
- Parameters including *args and **kwargs
- Inner functions
- Comprehensions (list, dictionary, set)
- lambda and function parameters
- map, filter,and reduce
Modules and packages
- Modules and namespaces
- Modules vs. packages
- Distribution packages and PyPI
- Class vs. instance attributes
- Class and static methods
- Magic methods
- Multiple inheritance and mixins
Iterators, generators and decorators
- Python’s iteration protocol
- Creating iterators (and why)
- Generator functions
- Generator expressions
- Decorator classes
- Decorator functions
- Context managers