Some Resources for Learning Python

Here I’m not trying to make a comprehensive list. I just want to suggest a manageable list of really good resources.

Neither can I be comprehensive. What follows is just what I know are good or look good to me for learners.


A novice (or nonprofessional) programmer’s code often suffers two problems:

  1. There is no deliberate distinction between library and one-off scripts. Most work is (long) scripts.

  2. Functions are long. A function grows on and on as you feel the need to do more and more.

The first problem is lack of modularity and reusability. The second is lack of decomposition. While both aspects require a lot of experience to master, I feel the latter is even harder to start for a new programmer. The two short reads below reinforce this basic idea of decomposition.

If you have learned something by now, then stop right here, turn to your code and work on these problems. There is no point in learning more language features.

I also suggest we always remember,

  • Don’t live with broken windows. Improve, fix, refactor as you go. Don’t think an improvement is not worth doing because it looks “small”, or it “works” for now. You won’t be making the same small improvements again and again. The quality of your code tomorrow is on the level of your code today. If you improve your code today, the code you write tomorrow will be on the level of your code today—only the improved version!—on first writing.

Books and Book-form Websites



  • Many talks by Raymond Hettinger, such as this one.

  • Many talks by Dan Bader. I have not watched his talks. But given his expertise and Python training career, and the topics of talks, I believe it’s quality learning material.

  • Many talks by David Beazley (advanced but entertaining), such as this one.

  • Many talks by Ned Batchelder, such as this one and this one.

  • Some talks by Brandon Rhodes, such as this one.

  • Some talks by Bob Martin, such as this one.

  • Some talks by Venkat Subramaniam, such as this one. One great quote from his talk I remember is something like

    Do not confuse “simple” with “familiar”.

    One common scenario is that when I suggest a simpler (usually more elegant, general, and extensible) approach to some code block, the other person resists (or silently chooses to reject) on the ground that the suggested approach is needlessly “hard” or “un-natural” or “complicated”. In fact it’s none of them; it’s unfamiliar to her.

    “Recursion” comes to mind.

  • and many more…

Blogs and Assortments

Specific Topics

Finally, I think this reminder is a good one to heed

Written on February 24, 2019