Source: https://warin.ca/ressources/books/2019_Book_AdvancedGuideToPython3Programm.pdf