March 2016: Please note the date on this post. Given the developments in the last three years, I would no longer agree with much of what I've written here. In particular, I substantially underestimated the ability of tools like six and python-future to enable single-codebase Python 2/3 support, and virtually all scientific packages now use such tools to support both. Short version: just use Python 3. There's almost no reason not to any more.
It's been just over four years since the introduction of Python 3, and there
are still about as many opinions on it as there are Python users. For
those who haven't been following, Python 3 is a release
which offers several nice improvements over the 2.x series
(summarized here)
with the distinct disadvantage that it broke backward compatibility:
though Python 3.x (often referred to as "Py3k" for short)
is true to the spirit of earlier Python versions,
there are a few valid 2.x constructions which will not parse under 3.x.
Breaking backward compatibility was controversial, to say the least. I
think of the debate as one between the pragmatists -- those who see Python
as an extremely useful tool, which should not be unnecessarily tampered with --
and the idealists -- those who view the Python language
as a living, breathing entity, which should be allowed to grow into the
fullest and most Pythonic possible version of itself.