A Note on Code Readability
You’ll find this post in the _posts directory.
If you had a choice
Given some utility function:
def is_even(x: int): return x % 2 == 0
and usage
quantify(range(50), is_even) # => 25
Which of the following would you like to stumble across in the codebase?
Exhibit A:
def quantify(iterable, predicate=bool) -> int:
    "Count the number of items in iterable for which the predicate is true."
    return sum(map(predicate, iterable))
Exhibit B:
def quantify(iterable, predicate=bool) -> int:
    "Count the number of items in iterable for which the predicate is true."
    return sum((predicate(x) for x in iterable))
Why it matters
I stumbled across Exhibit A in one of Peter Norvig’s pytudes (which he says he got from the itertools docs) and thought
but that can be done with implicit generator syntax. Why call
map?
As Norvig’s pytudes are a something of a high watermark (actually quality code) in published, free Python resources, I wonder why he and I thought differently.
Still haven’t reached an answer, but thought I would put it out there…
