python 3 deep dive part 2