Lang: en Slug: python-avance Title: Advanced Python That's the last of my two Python trainings. While the [introduction training]({filename}/pages/python-initiation.md) covers using classes and libraries to create simple programs, this training focuses on the art of creating classes and libraries to build reusable chunks in arbitrary complex software. ## Goals At the end of this training, one is able to produce *readable*, *maintainable*, and *tested* code on any kind of project. Focus is set on sharing and reusing code: - Creating libraries (modules, packages). - Packaging and distributing libraries. - Managing dependencies in libraries and in projects. - Tests and documentation. ## Prerequisites The pre-requisite to follow this training is either to have followed the [Python Introduction]({filename}/pages/python-initiation.md) one, or have an equivalent level, that is: be able to read and modify Python code, be able to write Python code to solve a given problem from scratch. ## Content - Python protocols (iteration protocol, any "dunder", …). - Classes and their instances (where we speak about the MRO and `super()`). - The descriptor protocol. - The *garbage collector*. - IEEE 754 *floats*, knowing their limits. - Create, raise, and handle exception. `try`'s `else` and `finally`. - Context managers. - Decorators. - List comprehensions. - The Walrus Operator (`:=`). - String encodings. - Packaging using `pyproject.toml`, `python -m build`, `twine`, … - Asynchronous Python with `async` and `await`. ## Duration This training best spam over five days, but I'm acustomed to give a 3 day version of it too. ## Contact To know more, please shoot me an email at [julien@palard.fr](mailto:julien@palard.fr).