YOU’RE LEARNING TO↗use functools.partial to fix arguments and create specialised callables
↗apply lru_cache and cache for memoisation and understand their performance implications
↗use cached_property to defer expensive property computation
↗implement singledispatch for type-based function overloading
↗use functools.wraps to preserve function metadata in decorators
↗use total_ordering to complete comparison operators from two