https://medium.com/better-programming/4-advanced-tricks-with-python-functions-you-might-not-know-d1214d751741