- Every single function checks the sanity of its arguments and either returns something sensible when the arguments are unreasonable or assigns them reasonable values.
- All code blocks check for possible errors and escape the block when things go wrong, setting the state to something reasonable, and continuing to execute the rest of the function.
20.2 A Program in this Style
1 #!/usr/bin/env python
2 import sys, re, operator, string, inspect
5 # The functions
7 def extract_words(path_to_file):
8 if type(path_to_file) is not str or not path_to_file:
9 return 
12 with open(path_to_file) ...