python defensive programming