Guido on python3 for beginners

Cem Karan cfkaran2 at
Thu Feb 18 05:57:33 EST 2016

On Feb 18, 2016, at 4:57 AM, Chris Angelico <rosuav at> wrote:

> On Thu, Feb 18, 2016 at 7:40 PM, Terry Reedy <tjreedy at> wrote:
>> To my mind, the numerous duplications and overlaps in 2.7 that are gone in
>> 3.x make 2.7 the worse version ever for beginners.
> Hmm. I was teaching on 2.7 up until last year, and for the most part,
> we taught a "compatible with Py3" subset of the language, without any
> significant cost. If you'd shown code saying "except ValueError, e:"
> to one of my Py2 students then, s/he would have been just as
> unfamiliar as one of my Py3 students would be today. That said,
> though, it's still that Py3 is no worse than Py2, and potentially
> better.
> The removal of L suffixes (and, similarly, the removal of u"..."
> prefixes on text strings) is a bigger deal to newbies than it is to
> experienced programmers, so that one definitely counts. "This is
> great, but how can I remove that u from the strings?" was a common
> question (eg when they're printing out a list of strings obtained from
> a database, or decoded from JSON).
> The removal of old-style classes is a definite improvement in Py3, as
> is the no-arg form of super(), which I'd consider a related change. So
> there's a bunch of tiny little "quality of life" improvements here.
> ChrisA

I agree with Chris on all his points.  My personal feeling is that Py3 is the way to go for teaching in the future; its just that little bit more consistent across the board.  And the things that are confusing are not things that beginners will need to know about.

About the only thing I've read where Py2 has a slight advantage is for scripts where you're suddenly surprised by Py2 starting up when you've been using a Py3 interactive interpreter.  For me, I'd probably give my students a block of code that they are asked to copy at the start of their files to test for Py2 or Py3, and to raise an exception on Py2.  After that, I just wouldn't worry about it.

Cem Karan

More information about the Python-list mailing list