What do you wish you'd known about when you started learning Python? [closed]

I've decided to learn Python 3. For those that have gone before, what did you find most useful along the way and wish you'd known about sooner?


I learned Python back before the 1.5.2 release, so the things that were key for me back then may not be the key things today.

That being said, a crucial thing that took me a little bit to realize, but I now consider crucial: much functionality that other languages would make intrinsic is actually made available by the standard library and the built-ins.

The language itself is small and simple, but until you're familiar with the built-ins and the "core parts" of the standard library (e.g., nowadays, sys, itertools, collections, copy, ...), you'll be reinventing the wheel over and over. So, the more time you invest in getting familiar with those parts, the smoother your progress will be. Every time you have a task you want to do, that doesn't seem to be directly supported by the language, first ask yourself: what built-ins or modules in the standard library will make the task much simpler, or even do it all for me? Sometimes there won't be any, but more often than not you'll find excellent solutions by proceeding with this mindset.


  1. I wished I didn't know Java.
  2. More functional programming. (see itertools module, list comprehension, map(), reduce() or filter())

List comprehension (makes a list cleanly):

[x for x in y if x > z]

Generator expansion (same as list comprehension but doesn't evaluate until it is used):

(x for x in y if x > z)

Two brain-cramping things. One of which doesn't apply to Python 3.

a = 095

Doesn't work. Why? The leading zero is an octal literal. The 9 is not valid in an octal literal.

def foo( bar=[] ):
    bar.append( 1 )
    return bar

Doesn't work. Why? The mutable default object gets reused.