On 1/28/2010 11:03 AM, Mitchell L Model wrote:
I have been working with Python 3 for over a year. I used it in writing
my book "Bioinformatics Programming Using Python"
(http://oreilly.com/catalog/9780596154509). I didn't see any point in
teaching an incompatible earlier version of a language in transition. In
preparing the book and its examples I explored a large number of Python
modules in some depth and encountered most of the differences between
the language and libraries of Python 2 and Python 3. The change was a
bit awkward for a while, and there were some surprises, but in the end I
have found nothing in Python 3 for which I would prefer Python 2's version.

Removal of old-style classes is a big win. Having print as a function
provides a tremendous amount of flexibility. I use the sep and end
keywords all the time. There is no reason for print to be a statement,
and it was an awkward inconsistency in a language that leans towards
functional styles. Likewise the elimination of cmp, while shocking,
leads to much simpler comparison arguments to sort, since all the
function does is return a key; then, sort uses __lt__ (I think) so it
automatically uses each class's definition of that. The weird objects
returned from things like sorted, dict.keys/values/items, and so on are
values that in practice are used primarily in iterations; you can always
turn the result into a list, though I have to admit that while
developing and debugging I trip trying to pick out a specific element
from one of these using indexing (typically [0]); I've learned to think
of them as generators, even though they aren't. The rearrangements and
name changes in the libraries are quite helpful. I could go on, but
basically the language and library changes are on the whole large
improvements with little, if any, downside.

I agree completely.

Conversion of old code is greatly facilitied by the 2to3 tool that comes
with Python 3. The big issue in moving from 2 to 3 is the external
libraries and development tools you use. Different IDEs have released
versions that support Python 3 at different times. (I believe Wing was
the first.) If you use numpy, for example, or one of the many libraries
that require it, you are stuck. Possibly some important facilities will
never be ported to Python 3, but probably most active projects will
eventually produce a Python 3 version -- for example, according to its
web page, a Python 3 version of PIL is on the way. I was able to cover
all the topics in my book using only Python library modules, something I
felt would be best for readers -- I used libraries such as elementree,
sqlite3, and tkinter. The only disappointment was that I couldn't
include a chapter on BioPython, since there is no Python 3 version.

By now, many large facilities support both Python 2 and Python 3. I am
currently building a complex GUI/Visualization application based on the
Python 3 version of PyQt4 and Wing IDE and am delighted with all of it.
It may well be that some very important large

Something got clipped ;-)

Anyway, thank you for the report.

Terry Jan Reedy


--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to