On Sat, Apr 19, 2014 at 4:40 PM, Paul Rubin <no.email@nospam.invalid> wrote: > If you're starting a new project and you get to choose between 2 and 3, > other things equal I'd say use 3. I've kept using 2 basically because > it's the path of least resistance. I'm somewhat following the 3 > situation and of course I'd use 3 if I were doing something that > benefited from it, but so far it hasn't been an issue. > > Eventually the main Linux distros will include 3 instead of 2 by > default, and we'll probably see more migration then. Right now I type > "python" and get 2, so I use it.
Several of the main distros are already including Python 3 by default (eg Ubuntu), but when you type "python", you still get Python 2, for reasons of compatibility. (See PEP 394.) As long as you set your shebang to say python3, it'll work just fine. I strongly recommend going for Python 3 unless something actually stops you from doing so. If you absolutely must use Python 2, try to aim for a minimum of 2.6 or 2.7, and start your program with this line: from __future__ import print_function, unicode_literals, division That'll make Python 2.6/2.7 behave like Python 3.x in three ways: firstly, "print" will be a function instead of a statement (and it's more powerful than the statement form, as well as being more flexible); secondly, quoted strings will be Unicode strings, not byte strings (that'll help you to start thinking about what's bytes and what's text, which is an important distinction in Python 3); and thirdly, though less important than the others, the division of two integers will result in a floating point, not an integer. I personally think the last one was a mistake on Python 3's part (why bless float specifically? what if you're working with integers and decimal.Decimals?), but if you're going to move to Python 3, you may as well have your code start working that way, so you get used to typing // to divide integers and get an integer (floor division). But if you possibly can, aim for Python 3. Every new version adds features, and new versions within the 3.x line break very little (generally only what would have been working with a bug anyway, like narrow Unicode builds of 3.2 becoming universal on 3.3). If you aim for 3.2 today, and tomorrow try to run your code on 3.4, chances are it'll work. The main thing is, know what's a text string and what's a string of bytes; that's critical in 3.x, but not in 2.x. Force yourself to think about that, and your code will be more reliable - regardless of even what language you write it in. ChrisA -- https://mail.python.org/mailman/listinfo/python-list