Hacker Read top | best | new | newcomments | leaders | about | bookmarklet login

Except I know plenty of experienced Python 2 users (like myself) who moved to 3.x and like it. The point being made, I believe, is that the only reason to prefer 2 is if you are locked into it for historical reasons.

The differences are small, and all the arguments against 3 are really just 'breaking changes suck' - yes, they do, but it turns out that we aren't perfect and language designs aren't perfect - you either make breaking changes or live with bad designs forever.

Python made those breaking changes - the alternative just means that in X years we'll move to an entirely different language that does things better instead of moving to Python 3, and at least having an upgrade path.



sort by: page size:

Well now you're getting onto my personal reason why I don't adopt Python 3. Python 2 will remain just as useful as it's been. Python 3 will not significantly extend that usefulness.

So I don't think there's much to be gained.

The 3 syntax and new features are not massively better than the sweet spot hit by 2, they're not even incrementally better. They're just massively more complicated.

So the cost/benefit ratio of Python 2 to 3 just isn't there. People are changing up because it's "the done thing" not because they really gain anything.

I was surprised as hell when I realized I wouldn't use Python 3, but it is a rational and considered opinion.


I see you've been downvoted. Interesting, you said that you haven't found a reason to switch and someone looked at it and thought "How dare you not find a reason to switch, here let's teach you a lesson".

But in large I agree. 3 hasn't provided enought of a carrot and 2 hasn't been enough of a pain for many people to want to switch. Especially when it comes to existing stable code bases. For new development, yes, many can and should pick Python 3. But if say Python 3 brought even a 20% speed improvement overwall, the move would have been a lot faster.

I find people are ok with accepting some breakages due to re-writes if either existing stuff is very broken, or new stuff is so much better.


There isn't a huge amount of win for going to Python 3, but there's plenty of code to change. It's not like Python 3 is 10x faster or has multi line lambdas or something.

Plus Python 2 has been updated many times in the past decade so it's not a maintainance based motivation.

Personally I code against Python 2. There just hasn't been enough motivation to learn 3 and make sure all my third party libraries work with it.


In large part because python 3 just wasn't worth using for the first few (probably five or six) years. The big reason so many of us use python is because of the wide range of libraries and modules that no longer worked.

And when selling it to people, it was usually "Oh, just do X, Y, and Z and you can port this library to Python 3". Not to mention all of the "Just write your python scripts to be backwards compatible".

So, as a user, I saw no reason to push it. A lot of hassle to not even really take advantage of anything to stay backwards compatible. And the moment we found a library that wasn't ported, we were back to 2.x.

Not to mention the zealots who would then explain to me how I was horribly wrong and that my firm is wrong and that we are bad people and blah blah blah blah blah.

These days it is a much easier sell in terms of compatibility as most (not all) major libraries have migrated. My personal work tends to be in python 3 and we try to make our in-house tools work for both (but 2.x is the priority). But most of our users are still going to use 2.x simply because there is no compelling reason to migrate (even if the migration is "Put parentheses after 'print'").

And the zealots are still annoying as hell.

And if 2.x really stops getting supported? I hope we'll migrate to 3, but there will be a lot of research and soul-searching first. Because now there are other languages with similar capabilities and if we are going to have to teach everyone something new, we might as well do it right.


It's human nature to resist change. Making a clean break and avoiding backwards compatibility was the smart move, it annoyed many, but I look around and see some languages truly suffering from such things years down the track.

Python3 is superior, its nothing but fandom when people say otherwise. Starting from scratch I'm yet to see any real benefit for 2, yet it still happens routinely due to the mindsets of some.


Really? It seems to me like a mostly small vocal group is pushing 3. Most people I talk to actually using it heavily in production are ambivalent or actively planning on staying on 2.

Python 3 is exactly how not to do a major language change. They broke enough that porting isn't trivial, and for many programs there just isn't any benefit. Plus the performance noticeably regressed.


I dunno, they made some big breaking changes but continued supporting 2.x for over a decade after 3.x. There are definitely reasons I would not consider Python for some projects, but the 2/3 transition is not one of them. To be honest the event is so infamous (and IMO a little overblown) that they basically couldn't do this anymore, and I think it's been openly stated that they wouldn't.

The problem is that both support unicode and 2 vs 3 unicode handling are just two different ways to do it. Which places Python3 firmly in the 'technological churn' category, rather than true technical innovation.

I'd probably agree 3.x is more Pythonic in this regard, but I think it was an ill-advised move. Plenty of reasoning in my last response as to why.

Why not go ahead and use Python3, you may find it works for you. For me, there's a long tail of libraries that don't exist there, and frankly following the core dev teams' example- we should all act in our own best interests. I'm far more productive in 2.x.

I may eventually move to 3.x, but it will have to be based on its merits. Rather than dogma, salesmanship or propaganda. Today it isn't even close to 2.x and we're nearing 7 years since 3.0 was released.

Unlike most things in life such as updating some software package, the "latest version" of a programming language isn't always in your best interests. I think this is a hard mental barrier to break down, especially people coming into Python now.

But I would always recommend learning/using 2.x, not only is it easier to build cool things with it (the whole point), but you have to learn 2.x. You can avoid 3 entirely, without any issue whatsoever.


People still stuck in python2 and arguing that python2 is better than python3 is weird.

I get it, more features does not mean better and newer does not mean better but seriously, just do the jump to python3. It's not that much work and the language is much nicer to work with.

I've built a library with python2/3 support and do most of my work in python3. Maybe my web dev background biases me somehow, but I can't remember the last time I had problems with a major library not supporting python3.

To me this seems more like tradition/age/generation -related. Those who started back in python1/2 are the ones with problems moving to python3, while young people who started with python 3.x are already running 3.5/3.6.

ps. like the author said, there will always be large corporations stuck in very old techs - that doesn't mean the rest of the world too has to use Cobol or MUMPS.


Thanks for working on this. I like some of the stuff in Python 3, but I don't see any compelling reason to switch to it; I'd much rather see the vast majority of features in 3 moved back to a 2 series interpreter. That most of the features can be moved back is, in itself, an important statement on whether 3 was necessary at all.

Agreed. The main difference is that development of python 3 didn't stop development on the 2.x branch until 3.4(?) was out. There was also an upgrade path and the ability to support both Python 2 and Python 3 at the same time. Python 3 could _easily_ have been a similar roadblock but was handled well enough to avoid that fate (better upgrade tooling would have been a massive help)

My objection is more about how it was handled on a communication and technical level than any of the specifics of switching to Python 3 over 2.

Are people really still so closely wedded to Python 2 that they find it easier to reimplement all the features they need from Python 3 in the former, instead of switching to the latter?

It's true that Python 2 and 3 are entire different languages.They have the same basics but once you dig a little,they are very different.

As hard as it is for people like me who use 2.X a lot,Python secured its survival with 3.I wish the transition would have been smoother though.


I hope you didn't read my comment as saying Python 2 is better. Personally I don't have an opinion on that. But as you can see from this thread and many, many others, a lot of people are disappointed with Python 3's choices. You're right, it's been a lot of years, but if adoption has been as slow as some are suggesting, maybe we could cut our losses and put our beloved Python on a different path, as a community.

Personally I use Python 2. I'll move to Python 3 when I think it's ready for prime time for my needs. I'm in no rush.

None of this deters me from thinking that Python 3 was the right thing to do.


i personally don't care too much about how python 2 is still more popular than python 3. it's like saying java 1.5 is more popular than java 8. it just doesn't matter to people who use python 3. after working on a python 3 code base for almost 2 years now i wouldn't go back to python 2 if they paid me for it and there's one reason for that: exception handling. it's something that's just broken in python 2. it's a huge change and your 3) is invalid because of that (and unicode, but you probably don't care if you don't consider this a worthwile change.) your 4) thus doesn't follow. re your point 5), python's current leadership should be commended for creating a language so good that people have no reason to switch from. python 3 is even better, so just start using it for new projects.

I've found exactly the same thing.

As someone writing applications using Python 3, I found the switch to be easy and I haven't had any problems with libraries. I've switched from some of the old ones I was using to more modern alternatives that are being actively developed.

It annoys me that there are people on Python 2 that haven't really tried to make the switch and stand on the sideline shouting insults at Python 3. It's a tremendously self destructive thing to do for all involved.

To anyone looking to get started with Python, there's no real reason to start with Python 2 these days.


This is an ancient argument because no one can convince you that you need 3 for your use case. All I can do is say why I like it, and list reasons that probably don't apply to you or you would have switched already.

For example, print and division made more sense to me in 3, judging from friends who taught 2 and said those were always sticky for some students in every class. Intuitive lowers the barrier to entry. (But 2 is probably more intuitive to you because it's second nature to you by now.)

Unicode--when I would test some tiny scripts with Chinese characters or weird ciphers--was pretty easy out of the box in 3.

On systems that only support 2 I find myself slipping in basically a 'from future import all the things.'

These are admittedly mostly cosmetics. But cosmetics matter for noobs like I was, or maybe still am.

I guess 3 also fixed ambiguity in corner cases for error handling? Never came up for me so I don't know much about that one.

You probably just don't have those use cases?

Two people could use distinct subsets of python and neither is using it wrong. Meaning... there could be reasons many of us want 3 that simply don't apply to you. Which sucks, because you get hit with switching costs to help the rest of us.

I think that's the recipe for an endless debate with two reasonable sides.

I will say py2 was already fragmented without 3. PaiMei only ran on... 2.4 maybe? You'd find weird projects that you liked that would then get abandoned. Suddenly you're shimming them all or running four versions. I think 3 woke people up to this as a problem--by making it much harder to patch and way more universal. That made the project more conscious about future and backwards compatibility. Those dividends will only be seen over time. I hope they vest but can't prove how or if they have.

I hope this is helpful... Just know that I'm not saying you're wrong to want to use something that works for you. Switching costs are a real thing, I know it sucks to feel dragged along. But py3 is a lot better for me and others, possibly because we're using the language for different things.

next

Legal | privacy