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.
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.
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.
Test-driven Python development
Writing scalable Python code
- iterators and Python's iterator protocol
- Leveraging built-in types for improved performance
Python's logging module
- 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
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
- RESTful API integration
- Building REST servers in Python
Mastering list comprehensions
Functional Python programming
Practical agile software development in Python
- Virtual environments
- Package management
- Version control considerations
- Maintainability and readability
- Best Practices for reliability and robustness