Advanced Python Training Course

Course Summary

How do the world's best engineering teams use Python?  What language features to they use, and how? How do you do test-driven development, leverage Python's object model, build concurrent servers, and more?  This course for experienced developers helps you take your expertise in Python to a whole new level.

 

Duration [top]

4 days.

Objectives [top]

Students will learn the most powerful patterns and tools modern Python has to offer, and how to leverage them to create reliable, maintainable applications - either individually, or as part of a development team. This course is taught using Python 3, with instruction throughout on how to apply the concepts to Python 2.

Prerequisites [top]

Students must have at least one year of full-time development experience in any language; understanding and experience with object-oriented design; and at least six months experience writing Python (2 or 3). While this course is primarily taught in Python 3, no prior knowledge of Python 3 is required.

Outline [top]

  • Test-driven Python development
  • Writing scalable Python code
    • iterators and Python's iterator protocol
    • Generators
    • Views
    • Leveraging built-in types for improved performance
  • Getting the most out of Python's amazing and rich logging module
  • Python's concurrency model
    • Understanding the important distinction between OS threads and Python threads, and the implications for concurrent Python software
    • Scaling CPU-bound tasks with multiprocessing
    • Asynchronous programming with asyncio
    • Multiple threads in Python: when to do it, when to avoid it, and best practices
  • Context managers
  • All about decorators
    • Review of basic decorator patterns
    • Creating decorators that take arguments
    • Powerfully extensible class-based decorators
    • Creating decorators for classes (which is a completely different thing)
  • Object-oriented programming with Python
    • The Python object model
    • Creating new syntax and expressive code with "magic methods"
    • Patterns of abstraction and code organization
    • Metaclasses: what they do, when to use them, and when to avoid them
  • REST APIs
    • RESTful API integration
    • Building REST servers in Python
  • Mastering list comprehensions
  • Functional Python programming
  • Python 3
    • Python 3's new string model
    • The important new additions in 3 
    • Translating the key benefits of 3 back into Python 2 code 
    • Practical advice on dealing with the 2 vs. 3 divide
  • Practical agile software development in Python
    • Virtual environments
    • Package management
    • Version control considerations
    • Maintainability and readability
    • Best Practices for reliability and robustness
  • Advanced data types and collections
  • Additional topics depending on goals and desires of participants