-
Book Overview & Buying
-
Table Of Contents
-
Feedback & Rating
Modern Python Standard Library Cookbook
By :
Generic functions are one of my favorite features of the standard library. Python is a very dynamic language and through duck-typing, you will frequently be able to write code that works in many different conditions (it doesn't matter if you receive a list or a tuple), but in some cases, you will really need to have two totally different code bases depending on the received input.
For example, we might want to have a function that prints content of the provided dictionary in a human-readable format, but we want it also to work properly on lists of tuples and report errors for unsupported types.
The functools.singledispatch decorator allows us to implement a generic dispatch based on argument type:
from functools import singledispatch
@singledispatch
def human_readable(d):
raise ValueError('Unsupported argument type %s' % type(d))
@human_readable.register(dict)
def human_readable_dict(d):
for key, value in d.items():
print('{}: {}'.format(key...