I really apologize if this doesn't follow the S.O rules but I need a little help, I personally still classify myself as a beginner in python, Yet I've wrote a very small and VERY SURE impractical program for my boss to use.

I know I'm still a beginner because simple things still perplex me but every book I read for beginners honestly just rehashes what I do already know but every 'more advanced' book doesn't really allow me to learn, they depend on example files and I never really understand why they built 'said' function or 'said' class. So onto my question...

Is there any recommendations on a book or ANYTHING that pushes me out of this stage, I've used head first and normally they are really good but my issue there is they have me back tracking just to move forward again, It worked in HTML but its confusing in Python, basically I think I need to build a program while following along, Again I like HeadFirst's style but I need something that isn't going to make me have to remember one thing just to forget it...

for record, I've checked into some O'Reilly books

  • 7
    For every beginning concept, write a few small programs until you get the hang of it. Once you feel comfortable, do the same with more and more until you get to advanced stuff. Just reading without practise and coding isn't going to help you much.
    – darioo
    Apr 25, 2011 at 7:38
  • 6
    Did you already read How to think like a Computer Scientist? Apr 25, 2011 at 7:38
  • Have you already followed the tutorial docs.python.org/tutorial/index.html? Do you have specific aspects that confuse you? If you could illustrate them with some code examples it would be even better. Apr 25, 2011 at 7:40
  • Doesn't the boss need a larger program written in Python too? You need experience...
    – user1249
    Apr 25, 2011 at 7:44
  • 2
    do, try, and ask questions when you don't understand, people here will help you out.
    – monkut
    Apr 25, 2011 at 12:06

9 Answers 9


Stop reading books.

Go write code using the time now free from reading. Practice. Ponder. Face real problems in real code you write.

Then you'll have enough questions that advanced books can answer. Now you don't have these questions, and the answers in the books make no sense to you.

This is very much like learning a foreign language or learning how to swim: books alone cannot help. You need to practice a lot, then your brain 'gets it'.


FWIW, the way I really learned Python was to write a non-trivial application for myself. Actually it was a re-write of the same application I had previously created to learn C (and C++ later), so I was very familiar with what kinds of processing needed to be done. During each (re)write, I tried to take advantage of any special features offered by the particular language being used or that I simply wanted to try out.

As a bonus, when you're done or at least have a working version, you'll have something actually useful, not some programming exercise that's worthless by itself. You can also go back later and change the program after you learn more of better ways to accomplish things in the language.

One very useful way to get better at any programming language is to just read a lot of other programs. One good way to do that these days is to use Google, as described in this StackedOverflow answer. This is a great resource and you'll often be reading "industrial strength" code written by professional programmers and used in other real-life applications.


Since Google's Code Search was discontinued on 15-Jan-2012, besides reverting to regular Google searches, there's something called Code Snippets Collection that looks promising. A number of other resources are mentioned in answers this (closed) question Replacement for Google Code Search?.

  • 5
    Emphasis on non-trivial. To learn how to do difficult things, try to do difficult things. Feb 2, 2012 at 0:42

Just keep slogging at the easy concepts. Make little programs encapsulating their concepts. At some point You'll crest a hill of understanding and new stuff will make more sense to you. I also keep a directory called Python snippets. I find it useful as a start point in certain concepts.

One other trick I find invaluable is to read other peoples code and comment it, summarizing what each line and section does. If I don't know, then its time to Google. This way I get to see Python in action and I can break it down into neat sections.

One particularly rich resource for code is the Python source itself.


If you're unsure about basic Python libraries or object oriented design (since you mention not knowing why "said" class or "said" function was used):

  1. Building Skills in Object Oriented Design really helps you think through the object-oriented design.

  2. S.Lott's other site, Building Skills in Python, may also be a good way for you to expand your Python skills beyond the basics. It has a lot of applications that are a bit simpler than the books listed below, but are still fun and instructive.

If your issue is that you can't figure out how to use Python to do anything interesting:

1) Beginning Python: From Novice to Professional gets into some interesting stuff: GUIs, writing your own file sharing app, etc. I like Hetland's style, too.

2) You mentioned O'Reilly books, but Programming Python deals almost entirely with applications instead of syntax. It has a lot of interesting applications that will get your creative juices flowing. It's a huge book (~1,500 pages I think), and 4e is entirely focused on Python 3, but definitely opens your eyes to how people are using Python.

  • +1 for the ref to the S. Lott site...I've never seen that one before.
    – Gerrat
    Jul 27, 2011 at 14:32

There are two Python books that I would recommend, and one of them was already mentioned by @MikeRand:

  • Dive Into Python 3 is a must book that covers introductory and some more advanced topics.
  • Programming Python is IMHO the right book for moving into very advanced Python topics. It also covers many areas, for example (G)UIs, system applications, web programming, etc.

Note that the latest versions of both books cover Python 3. If you work with an older version of Python look for an earlier version of the books. FTR, an alternative option is Python for Software Design (former How to Think Like a Computer Scientist: Learning with Python mentioned by @oscar-mederos) but most of its content is also introductory (and in that sense I would recommend Dive Into Python instead).


The most efficient way is to get your code regularly reviewed by an experienced mentor, and implement his suggestions. This is one of the biggest benefits of a college degree, but doesn't necessarily have to be as formal as that. I consider myself an advanced programmer, but I still walk down the hall to discuss major design decisions with a peer before coding, and get the finished product reviewed afterwards.


In addition to some of the books mentioned (especially How to Think Like a Computer Scientist), checkout ActiveState's Python Recipes site. Read some stuff that interests you, look at the code, and then figure out how you would have approached the problem and how that differs from what's in the recipe.


This is a pretty weird suggestion, but the way I got to be where I am is by asking questions and watching other people ask questions, and reading the answers. So, browsing Stack Overflow's Python-tagged questions, or (like in my case) becoming a regular on #python on freenode.


Try the book "Hello World! Computer Programming for Teens and Other Beginners" by Warren and Carter Sande is how I learned Python Scripting, or I've heard "Hello! Python" by Anthony Briggs is also a fantastic book.

Focus on organizing your programs with functions, comments, and some sort of structure to how it flows. Don't forget: A Program is simply a set of instructions the computer follows. Make it easy to read and understand.

Not the answer you're looking for? Browse other questions tagged or ask your own question.