Moving from Python 2 to Python 3: A 4 page "cheat sheet"

Mark Summerfield list at qtrac.plus.com
Wed Dec 2 03:10:45 EST 2009


On 1 Dec, 18:30, Lie Ryan <lie.1... at gmail.com> wrote:
> On 12/2/2009 1:03 AM, Mark Summerfield wrote:
>
>
>
> > I've produced a 4 page document that provides a very concise summary
> > of Python 2<->3 differences plus the most commonly used new Python 3
> > features. It is aimed at existing Python 2 programmers who want to
> > start writing Python 3 programs and want to use Python 3 idioms rather
> > than those from Python 2 where the idioms differ.
>
> > It uses Python 3.1 syntax since that looks like being the standard for
> > a few years in view of the language moratorium.
>
> > The document is U.S. Letter size but will also print fine on A4
> > printers.
>
> > It is available as a free PDF download (no registration or anything)
> > from InformIT's website. Here's the direct link:
> >http://ptgmedia.pearsoncmg.com/imprint_downloads/informit/promotions/...
>
> > And of course, if you want more on Python 3, there's always the
> > documentation---or my book:-)
> > "Programming in Python 3 (Second Edition)" ISBN-10: 0321680561.
>
> Nice.

Thanks!

> I suggest changing the lambda example a bit, the current example says:
> Python 2                      Python 3
> lambda (a,b): a + b           lambda t: t[0] + t[1]
>                                lambda a, b: a + b
>
> into something like:
>
> Python 2                      Python 3
> lambda (a,b),c: a + b + c     lambda t, c: t[0] + t[1] + c
>                                lambda a, b, c: a + b + c
>
> it is unclear at first sight that it refers to tuple argument unpacking.

Your proposed example is clearer in some respects, but mine is more
minimal. And I think that anyone who _thinks_ about mine will get the
point. (The document is short, but I never claimed it was a quick
read;-)

> There should also some mention that tuple argument unpacking for regular
> function (def) is also gone.

I probably should have, but it is hard to fit any more in... esp.
since I don't want to take anything out.

> Also, I'm not sure what this change is referring to:
> Python 2                 Python 3
> L = list(seq)            L = sorted(seq)
> L.sort()
>
> L.sort is still available in python, and sorted() have been available
> since python 2. Both list.sort() and sorted() are for different purpose,
> and neither will be deprecated. What's the change here?

The document is about idioms as well as changes. In this case both
approaches work in both versions, but it seems that there are still a
lot of people who don't know about sorted(), so I put it in to show it
as an idiom.



More information about the Python-list mailing list