You know, I hate to say it, but you, and your parent commenters have basically said quite a bit without actually answering the question. Anyone coming here wondering which one to learn is going to be left with the same question, only slightly more confused.
I purposefully avoided any attempt to answer the question directly.
How would one know what to recommend while knowing nothing about `jcurbo`s intentions/designs/requirements?
The stackoverflow and wikipedia communities sometimes get flack about maintaining strict objectivity, and I know the HN community is allowed to be different, but surely you agree that there is no right answer to `jcurbo`s question. And if there is no right answer, surely offering information from a trusted source can be just as helpful (if not moreso).
> How would one know what to recommend while knowing nothing about `jcurbo`s intentions/designs/requirements?
For someone learning Python? Just give them your best suggestion. Look, it's fairly easy.
Learn Python 3. There are differences, and you might run into issues later on, but once you get to that point, you'll know enough to do something about it.
See, when someone asks whether to learn Python 2 or Python 3, that's what they are asking for. If they are learning for specific reasons (for a job, lets say), then instead of trying to answer, you ask follow up questions. But for learning a language, they are seeking advice from experienced people.
So, when those same experienced people, who already know Python 2 and/or Python 3 tell them to learn Python 2 and/or Python 3, they are being told: we don't know.
And how is someone inexperienced supposed to know which one to learn when experienced people don't know?
Basically, if you can't answer the question because you feel you lack information, ask. Otherwise, answering the question "Learn Python 2 or 3?" with the answer "Learn Python 2 or 3." isn't helpful.
Thanks to you and everyone else that responded. I was more interested in the parent's actual experience, what made them frustrated, etc. I agree that it depends highly on personal use cases and what you are trying to do. Personally, I am using it to support some of my graduate studies and some personal projects, nothing major. If I was doing major software development I would be doing more research on my own, and indeed this line from the wiki page would seal the deal for me:
"At the time of writing (July 4, 2010), the final 2.7 release is out, with a statement of extended support for this end-of-life release. The 2.x branch will see no new major releases after that."
Since what I am working on doesn't involve major libraries (like numpy) I see no reason to stay on 2.x and I think I'm safe to look at 3.x for future stuff.
It almost always is. The term has a connotation of "the existing state of affairs for the majority of people". So the majority of the web is largely template driven web pages/apps, served from php or java or maybe python behind apache, with some stuff enhanced by javascript. That is the status quo. All of us here of course know that is largely going to go away (and it's actively even happeninge), replaced by javscript driven single page apps where templating happens client side, and the web server becomes a file transfer mechanism for the code and some data, a well tested way of doing rpc for the rest of the data.
So yes, there are pages doing this new style web right now, but that doesn't change that the mojority of web stuff is the older style. So yeah, the current state of affairs is that the web is mostly outdated.
This is necessarily true always, unless that which is being examined is stagnant.