Practical Python
Richard P. Muller
May 18, 2000