Design Ideals Goals Python 3 - Forest for the trees

Alice Bevan–McGregor alice at gothcandy.com
Sun Dec 26 00:56:15 EST 2010


> I was interested in what the design goals/philosphy was of Python 3
> from a birds eye view, forest for the trees approach.

I think I can safely point to the Zen of Python[1] as many of the 
points therein directly apply to the simplifiation, clarification, and 
goals of Python 3.  Most notably:

:: Beautiful is better than ugly.

E.g. dict.iteritems, dict.iterkeys, dict.itervalues?  Strip 'iter' and 
it's fixed.

:: Special cases aren't special enough to break the rules.

Ever get hung up on core Python modules with title caps?  Yeah, those 
are fixed.

:: There should be one-- and preferably only one --obvious way to do it.

E.g. urllib, urllib2, urllibX… yeah, that's been fixed, too.  :)

:: Namespaces are one honking great idea -- let's do more of those!

Numerous modules have been merged, or moved into more manageable (and 
logical) namespaces.

> I can safely assume one goal was speed improvement as in the blog he 
> noted "Don’t fret too much about performance--plan to optimize later 
> when needed." So I assume that means that Python had developed to a
> point where that was needed.

The Python GIL (Global Interpreter Lock) has been getting a lot of 
negative attention over the last little while, and was recently fixed 
to be far more intelligent (and efficient) in Python 3.2.  There are 
numerous other performance improvements, for which yo ucan examine the 
change logs.

> But performance wouldn't be the over-arching criteria for the change. 
> Just curious.

Clarification, simplification, specivity, efficiency, … just be more 
"Pythonic".

Note that I'm not a core Python contributor or have ever communicated 
with the BDFL: this is just the viewpoint of somoene doing her 
darnd'est to encourage Python 3 support.  ;)  All of the new projects I 
work on are Python 2.6+ and Python 3.1+ compatible.  (Arguments against 
dual-compatible polygot code can go to /dev/null for the purposes of 
this thread.)

	- Alice

[1] http://www.python.org/dev/peps/pep-0020/





More information about the Python-list mailing list