There are several individual opinions online on this matter but I wanted to aggregate the sentiment of a whole HN community. Please give your reasons for your choice if possible
Go for 3. Most Python 2 projects have plans or are in the process of transitioning, if that is keeping you back. Also, the two lines aren't as different as they used to be, as a lot of features get back-ported from 3 to 2.
Python 3 is IMO a much cleaner and friendlier language to work with than 2. Especially if you're doing anything to do with Unicode, Python 2 can be a real pain. Also, all real development is now taking place on the 3.x series - if you want to keep up, you'd better learn it.
This is my opinion, and it may be a personal one, but from an engineering standpoint, I think you should learn both. I think learning multiple languages can only benefit you (if Python 2 vs 3 can even be considered different languages).
When I first started learning to program, I thought of every problem in terms of C++ (the first language I learned).
It wasn't until I learned other languages, and really other paradigms (functional vs imperative vs constraint etc), when I really saw that a problem can be framed in so many different ways, entirely based on the language, and some of them are more elegant, more efficient, simpler, or offer some other benefit.
I think if you learn python 2, and really get to grips with it's pitfalls and other nuances, and then learn python 3, you'll get a better understanding into the changes between the two languages, and I think that will give you a better overall understanding. And IMHO, more knowledge is always better.
I started learning Python a week ago and I sat in front of the computer for hours trying to solve the same dilemma. If you look at famous Python projects, eg Flask, they still advocate for Python 2 over 3 in their documentation[1]. I found it extremely unsettling, to find the python community still so divided, after so many years. I eventually decided to learn Python 3 because I couldn't accept the idea of learning a legacy technology. But until the important projects don't take a strong take in advocating Python 3, I fear the conversion from 2 to 3 will still take a long time. My hope is that the big Python players will start regarding Python 2 as legacy ASAP. From an outsider perspective, this python 2-3 seem ludicrous, and I am sure that it gives a very bad impression of the python community.
That's true, but even not updating such part is a symptom. I don't want to compare different ecosystems and culture, and I am very excited to starting to learn python overall, but you hardly see such things in a project of comparable size in the node or ruby world. As I said, I am loving python and Flask, but this is a symptom that the topic is not as hot as I though it should be.
Actually, the documentation has been updated, but on the development branch (http://flask.pocoo.org/docs/dev/python3/). I was just pointing out that what you were linking to was out of date.
are people still learning python? eons ago when I last looked at it, people were still making this very question LOL
it's the curse of open source software: as long as the source is out there, people with legacy software will continue updating it. Perl 6 was long in the making, never made any real inroads because all of its audience was already readily invested in perl 5.
it only really works with commercial tools, because people will whine much but eventually bend over and buy Microsoft's or Oracle's latest bloated money grabber. Because there's no option, right?
Python 3 is IMO a much cleaner and friendlier language to work with than 2. Especially if you're doing anything to do with Unicode, Python 2 can be a real pain. Also, all real development is now taking place on the 3.x series - if you want to keep up, you'd better learn it.
This is a good overview: https://wiki.python.org/moin/Python2orPython3