A problem with IPv6 is an instance of the chicken-and-egg problem: until everyone is using it, there is no point.
That's not the case with Python 3. For example, if you're a web developer, your customers don't really care if you're using Python 3 or PHP. So you can switch any time you want.
The problem may lie with the community, with packages that you may want to use. Not every package written for Python 2 works for Python 3. However, porting libraries to Python 3 proved to be not too hard, thanks to 2to3 and other well-thought things.
The idea behind migration to Python 3 is that, for now, all
A problem with IPv6 is an instance of the chicken-and-egg problem: until everyone is using it, there is no point.
That's not the case with Python 3. For example, if you're a web developer, your customers don't really care if you're using Python 3 or PHP. So you can switch any time you want.
The problem may lie with the community, with packages that you may want to use. Not every package written for Python 2 works for Python 3. However, porting libraries to Python 3 proved to be not too hard, thanks to 2to3 and other well-thought things.
The idea behind migration to Python 3 is that, for now, all libraries should work with both versions of Python, 2 and 3 (that is, with the help of 2to3, a program which converts source for Python 2 to the modern version). Since you can run several versions of Python on any computer simultaneously, you can use Python 3 as much as you're able to, and fall back to Python 2 if some package you want to use doesn't support Python 3 yet.
That means that the ecosystem can move to Python 3 incrementally. In fact, that's already happening. I believe that when major libraries start to embrace Python 3, new libraries are going to be written with that in mind, too. The work in this direction is already being done: for example, Django is going to offer first-class support for Python 3 really soon, in 1.6: Django 1.5 release notes - UNDER DEVELOPMENT
So, you don't have to wait to benefit from Python 3 in your programs. The packages you'd want to use are probably being ported as we speak. However, if you're using some big library or framework, like Django, you'd want to wait a couple of versions before using them with Python 3.
Where do I start?
I’m a huge financial nerd, and have spent an embarrassing amount of time talking to people about their money habits.
Here are the biggest mistakes people are making and how to fix them:
Not having a separate high interest savings account
Having a separate account allows you to see the results of all your hard work and keep your money separate so you're less tempted to spend it.
Plus with rates above 5.00%, the interest you can earn compared to most banks really adds up.
Here is a list of the top savings accounts available today. Deposit $5 before moving on because this is one of th
Where do I start?
I’m a huge financial nerd, and have spent an embarrassing amount of time talking to people about their money habits.
Here are the biggest mistakes people are making and how to fix them:
Not having a separate high interest savings account
Having a separate account allows you to see the results of all your hard work and keep your money separate so you're less tempted to spend it.
Plus with rates above 5.00%, the interest you can earn compared to most banks really adds up.
Here is a list of the top savings accounts available today. Deposit $5 before moving on because this is one of the biggest mistakes and easiest ones to fix.
Overpaying on car insurance
You’ve heard it a million times before, but the average American family still overspends by $417/year on car insurance.
If you’ve been with the same insurer for years, chances are you are one of them.
Pull up Coverage.com, a free site that will compare prices for you, answer the questions on the page, and it will show you how much you could be saving.
That’s it. You’ll likely be saving a bunch of money. Here’s a link to give it a try.
Consistently being in debt
If you’ve got $10K+ in debt (credit cards…medical bills…anything really) you could use a debt relief program and potentially reduce by over 20%.
Here’s how to see if you qualify:
Head over to this Debt Relief comparison website here, then simply answer the questions to see if you qualify.
It’s as simple as that. You’ll likely end up paying less than you owed before and you could be debt free in as little as 2 years.
Missing out on free money to invest
It’s no secret that millionaires love investing, but for the rest of us, it can seem out of reach.
Times have changed. There are a number of investing platforms that will give you a bonus to open an account and get started. All you have to do is open the account and invest at least $25, and you could get up to $1000 in bonus.
Pretty sweet deal right? Here is a link to some of the best options.
Having bad credit
A low credit score can come back to bite you in so many ways in the future.
From that next rental application to getting approved for any type of loan or credit card, if you have a bad history with credit, the good news is you can fix it.
Head over to BankRate.com and answer a few questions to see if you qualify. It only takes a few minutes and could save you from a major upset down the line.
How to get started
Hope this helps! Here are the links to get started:
Have a separate savings account
Stop overpaying for car insurance
Finally get out of debt
Start investing with a free bonus
Fix your credit
Python 3 adaptation has been a long road, but the world has continued to make its way toward Python 3. Syntax change like changing print from a statement to a function is annoying but is actually small stuff. The wrenching change was the shift from ASCII to Unicode. I take heart from seeing the major Linux distributions are actively working on shifting their internal use of Python over to Python 3. The world is slow to change, but it is changing.
I'm wondering when the next non-upward-compatible change to Cpython will come along. Change the CPython internals to allow multi-threaded garbage
Python 3 adaptation has been a long road, but the world has continued to make its way toward Python 3. Syntax change like changing print from a statement to a function is annoying but is actually small stuff. The wrenching change was the shift from ASCII to Unicode. I take heart from seeing the major Linux distributions are actively working on shifting their internal use of Python over to Python 3. The world is slow to change, but it is changing.
I'm wondering when the next non-upward-compatible change to Cpython will come along. Change the CPython internals to allow multi-threaded garbage collection? But not too soon.

Python 2 will be closed completely by 2020. Infact it was 2015 before but guido just extended the lifetime of Python 2.7 till 2020
https://hg.python.org/peps/rev/76d43e52d978
he also tweeted "I've extended the lifetime of Python 2.7 till 2020. http://t.co/X88P5zT5td (PEP 373 once it updates.)"
So I guess till 2020 (at most) Python 2 will be there.
and thats why nowadays almost all libraries/framework for python support Python3 and PyPy(yeah! this could be the future).
PS: Python 4 will be start from 2016.
It doesn’t, In fact it excels at interacting, wrapping and tying into all C, C++ Libraries and can take advantage of any GUI Libraries or direct programs exchanging to and from signals all written for C or C++ allot easier and with more Data Type and Algorithm control than C and C++ can do themselves. In fact I program in Python using everything in Win32, Qt4 & 5, Wx, OpenGL, GTK, FLTK among many others.
Of all these Libraries if you are at all famiuliar with C++ it is a wreck and mess to attempt tying C++ into many GUI Libraries among many other non GUI. Now in Pythgon you have the advantage o
It doesn’t, In fact it excels at interacting, wrapping and tying into all C, C++ Libraries and can take advantage of any GUI Libraries or direct programs exchanging to and from signals all written for C or C++ allot easier and with more Data Type and Algorithm control than C and C++ can do themselves. In fact I program in Python using everything in Win32, Qt4 & 5, Wx, OpenGL, GTK, FLTK among many others.
Of all these Libraries if you are at all famiuliar with C++ it is a wreck and mess to attempt tying C++ into many GUI Libraries among many other non GUI. Now in Pythgon you have the advantage over C++ own libraries because you can Pip install any of the current Libs and do it in about two minutes without having to mess with anything in the Shell or the OS. Wish C++ could do that yes right !
Now outside of these If you are a Programmer as I have been for years in C and C++. I will tell you openly that Python at version 3.7.0 is not the same Python everyone thinks it is. Pythons PyObject Direct Tie Ins to C and C++17 are insanely fast at massive data stores in dictionaries and all data types in Python and allow you to create your own algorithms, structs, pointers or whatever you may wish you need outside of Python using the PyObject Class.
Python can have massive programs larger than Windows OS in fact DropBox and Google have many Python programs larger than Windows 10. It can be programmed line to line and executed while building without having to compile or debug anything because the Interpreter does it for you.
As far as OS is concerned there are many projects making full use of Python and it’s C and C++17 PyObjects fully for Full Python OS. Ubuntu has one, RedHat has several and currently after Python 3.6 to 3.7 there are hundreds of Os projects directly using Python with Bare Bones Arch Linux, and these include the entire OS and its File System and full Python UI and GUI Control. And these have full automated control over Bash commands entirely where the user does not need to type anything likewise.
Python will amaze you if like me will give it some play time. I did after Retiring and it is simply the fastest production software creator on Earth in any Language and is the Greatest Tool created for Complimenting C and C++. And rightfully so with freedom of Expression for massive IT, Web, Data Science and AI you will ever need.
Who all uses Python currently for massive Data Stores, Database Tiering and Socket Client Tunneling (which Python excels at)? Microsoft, Google, Facebook, Twitter, Quora here and thousands more.
NASA even admits Pythons power and speed calculating massive data stores. So in answer is there anything Python lacks—Yes a Jit same as Java. But that is already in the works also at Boston College.
Python does not fail at anything actually. It is in fact C++ that will fail you many times though without Python because it is not near as forgiving. Python simply enhances my C++.
Three areas: in larger applications, in areas where performance matters, and in areas where lower-level control is required.
Static typing is very important in larger applications. Bugs are often caught at compile-time, or even before that by your IDE, with statically-typed languages. Type hints are an improvement but don’t really compete with actual static typing.
The performance of Python isn’t great. That’s no secret. This isn’t always relevant, but it does mean that it fails in areas where performance is important. In practice, Python will often serve as a higher-level interface to lower-lev
Three areas: in larger applications, in areas where performance matters, and in areas where lower-level control is required.
Static typing is very important in larger applications. Bugs are often caught at compile-time, or even before that by your IDE, with statically-typed languages. Type hints are an improvement but don’t really compete with actual static typing.
The performance of Python isn’t great. That’s no secret. This isn’t always relevant, but it does mean that it fails in areas where performance is important. In practice, Python will often serve as a higher-level interface to lower-level libraries. When people do data science in Python, the heavy lifting is often done in C or C++.
You also don’t have low-level control over the hardware. This makes Python a poor or even impossible choice for writing drivers or operating systems.
The above is where Python fails as a language. Python can be a poor choice for other reasons as well, for example for writing desktop or mobile applications. Apart from the fact that it’s ill-suited for larger applications, the toolkits that are available in Python for these purposes are often sub-optimal at best.
- from __future__ import braces #Seriously, try it !
Python is one of the most widely adopted general-purpose modern scripting-languages. (Javascript is used more by pure volume, but is fairly rare for anything other than webpages) It seems a pretty safe bet that Python is here to stay over the next decade.
Longer term there's no way to know for sure with any language, but it's not really worth worryi
- from __future__ import braces #Seriously, try it !
Python is one of the most widely adopted general-purpose modern scripting-languages. (Javascript is used more by pure volume, but is fairly rare for anything other than webpages) It seems a pretty safe bet that Python is here to stay over the next decade.
Longer term there's no way to know for sure with any language, but it's not really worth worrying about because IF Python is ever supplanted by a newer shinier language, it's almost guaranteed that most of the things you learn in Python will transfer easily to the new language.
When yo...
Here’s the thing: I wish I had known these money secrets sooner. They’ve helped so many people save hundreds, secure their family’s future, and grow their bank accounts—myself included.
And honestly? Putting them to use was way easier than I expected. I bet you can knock out at least three or four of these right now—yes, even from your phone.
Don’t wait like I did. Go ahead and start using these money secrets today!
1. Cancel Your Car Insurance
You might not even realize it, but your car insurance company is probably overcharging you. In fact, they’re kind of counting on you not noticing. Luckily,
Here’s the thing: I wish I had known these money secrets sooner. They’ve helped so many people save hundreds, secure their family’s future, and grow their bank accounts—myself included.
And honestly? Putting them to use was way easier than I expected. I bet you can knock out at least three or four of these right now—yes, even from your phone.
Don’t wait like I did. Go ahead and start using these money secrets today!
1. Cancel Your Car Insurance
You might not even realize it, but your car insurance company is probably overcharging you. In fact, they’re kind of counting on you not noticing. Luckily, this problem is easy to fix.
Don’t waste your time browsing insurance sites for a better deal. A company called Insurify shows you all your options at once — people who do this save up to $996 per year.
If you tell them a bit about yourself and your vehicle, they’ll send you personalized quotes so you can compare them and find the best one for you.
Tired of overpaying for car insurance? It takes just five minutes to compare your options with Insurify and see how much you could save on car insurance.
2. Ask This Company to Get a Big Chunk of Your Debt Forgiven
A company called National Debt Relief could convince your lenders to simply get rid of a big chunk of what you owe. No bankruptcy, no loans — you don’t even need to have good credit.
If you owe at least $10,000 in unsecured debt (credit card debt, personal loans, medical bills, etc.), National Debt Relief’s experts will build you a monthly payment plan. As your payments add up, they negotiate with your creditors to reduce the amount you owe. You then pay off the rest in a lump sum.
On average, you could become debt-free within 24 to 48 months. It takes less than a minute to sign up and see how much debt you could get rid of.
3. You Can Become a Real Estate Investor for as Little as $10
Take a look at some of the world’s wealthiest people. What do they have in common? Many invest in large private real estate deals. And here’s the thing: There’s no reason you can’t, too — for as little as $10.
An investment called the Fundrise Flagship Fund lets you get started in the world of real estate by giving you access to a low-cost, diversified portfolio of private real estate. The best part? You don’t have to be the landlord. The Flagship Fund does all the heavy lifting.
With an initial investment as low as $10, your money will be invested in the Fund, which already owns more than $1 billion worth of real estate around the country, from apartment complexes to the thriving housing rental market to larger last-mile e-commerce logistics centers.
Want to invest more? Many investors choose to invest $1,000 or more. This is a Fund that can fit any type of investor’s needs. Once invested, you can track your performance from your phone and watch as properties are acquired, improved, and operated. As properties generate cash flow, you could earn money through quarterly dividend payments. And over time, you could earn money off the potential appreciation of the properties.
So if you want to get started in the world of real-estate investing, it takes just a few minutes to sign up and create an account with the Fundrise Flagship Fund.
This is a paid advertisement. Carefully consider the investment objectives, risks, charges and expenses of the Fundrise Real Estate Fund before investing. This and other information can be found in the Fund’s prospectus. Read them carefully before investing.
4. Earn Up to $50 this Month By Answering Survey Questions About the News — It’s Anonymous
The news is a heated subject these days. It’s hard not to have an opinion on it.
Good news: A website called YouGov will pay you up to $50 or more this month just to answer survey questions about politics, the economy, and other hot news topics.
Plus, it’s totally anonymous, so no one will judge you for that hot take.
When you take a quick survey (some are less than three minutes), you’ll earn points you can exchange for up to $50 in cash or gift cards to places like Walmart and Amazon. Plus, Penny Hoarder readers will get an extra 500 points for registering and another 1,000 points after completing their first survey.
It takes just a few minutes to sign up and take your first survey, and you’ll receive your points immediately.
5. Get Up to $300 Just for Setting Up Direct Deposit With This Account
If you bank at a traditional brick-and-mortar bank, your money probably isn’t growing much (c’mon, 0.40% is basically nothing).
But there’s good news: With SoFi Checking and Savings (member FDIC), you stand to gain up to a hefty 3.80% APY on savings when you set up a direct deposit or have $5,000 or more in Qualifying Deposits and 0.50% APY on checking balances — savings APY is 10 times more than the national average.
Right now, a direct deposit of at least $1K not only sets you up for higher returns but also brings you closer to earning up to a $300 welcome bonus (terms apply).
You can easily deposit checks via your phone’s camera, transfer funds, and get customer service via chat or phone call. There are no account fees, no monthly fees and no overdraft fees. And your money is FDIC insured (up to $3M of additional FDIC insurance through the SoFi Insured Deposit Program).
It’s quick and easy to open an account with SoFi Checking and Savings (member FDIC) and watch your money grow faster than ever.
Read Disclaimer
5. Stop Paying Your Credit Card Company
If you have credit card debt, you know. The anxiety, the interest rates, the fear you’re never going to escape… but a website called AmONE wants to help.
If you owe your credit card companies $100,000 or less, AmONE will match you with a low-interest loan you can use to pay off every single one of your balances.
The benefit? You’ll be left with one bill to pay each month. And because personal loans have lower interest rates (AmONE rates start at 6.40% APR), you’ll get out of debt that much faster.
It takes less than a minute and just 10 questions to see what loans you qualify for.
6. Lock In Affordable Term Life Insurance in Minutes.
Let’s be honest—life insurance probably isn’t on your list of fun things to research. But locking in a policy now could mean huge peace of mind for your family down the road. And getting covered is actually a lot easier than you might think.
With Best Money’s term life insurance marketplace, you can compare top-rated policies in minutes and find coverage that works for you. No long phone calls. No confusing paperwork. Just straightforward quotes, starting at just $7 a month, from trusted providers so you can make an informed decision.
The best part? You’re in control. Answer a few quick questions, see your options, get coverage up to $3 million, and choose the coverage that fits your life and budget—on your terms.
You already protect your car, your home, even your phone. Why not make sure your family’s financial future is covered, too? Compare term life insurance rates with Best Money today and find a policy that fits.
I think people are mostly uncomfortable because not every 3rd party library is available for Python 3, although in recent times many of them are (apparently, you can already run Django on Python 3 - and this is a fine proof that big parts work, because Django requires quite a lot of libraries).
Otherwise Python 3 is a big improvement on Python 2, it fixes many inconsistencies that were accumulated during the years, and is generally nicer to read and write IMHO. It's small things like range()
being an iterator so you don't have to use xrange()
, print()
finally becoming a normal function with ke
I think people are mostly uncomfortable because not every 3rd party library is available for Python 3, although in recent times many of them are (apparently, you can already run Django on Python 3 - and this is a fine proof that big parts work, because Django requires quite a lot of libraries).
Otherwise Python 3 is a big improvement on Python 2, it fixes many inconsistencies that were accumulated during the years, and is generally nicer to read and write IMHO. It's small things like range()
being an iterator so you don't have to use xrange()
, print()
finally becoming a normal function with keyword arguments instead of a statement with special syntax, strings defaulting to UTF encoding, etc., but the general theme is the defaults start being the things people actually use, and awkwardness is removed.
All the little changes do add up, however, so I try to use Python 3 whenever possible (which is most of the time). I also have Python 2.7 installed, because I'm maintaining an older version of Django. Honestly, if I were you, I wouldn't worry about the version divide. Just learn Python, the differences aren't that big, and you can install them side-by-side.
The Python community is committed to Python 3, and most supported libraries are converted or soon will be. There’s a lot of legacy code out there, though, and 2.7 will remain supported for a long time. Use whichever is convenient for your purposes, but if you are starting a project from scratch, it’s probably time to switch to P 3.
Python 2 is daddy. Python 3 is his child.
Can you imagine a father saying that he is loosing to his child ?!
No! Right?
Thing is, daddy is getting old. This child is getting stronger and better each passing day (every release). He is reaching new heights. It’s this child’s responsibility to now keep up ...
Python 2 is daddy. Python 3 is his child.
Can you imagine a father saying that he is loosing to his child ?!
No! Right?
Thing is, daddy is getting old. This child is getting stronger and better each passing day (every release). He is reaching new heights. It’s this child’s responsibility to now keep up ...
Two principle reasons:
- There was a lot of Python 2 code out there, and people have seen no reasons to update it to Python 3.
- There remains a lot of Python 2 code out there that is not being updated to use Python 3.
1 is about people avoiding working on what is supposedly working code. This is really just bad code management, code should always be seen as in flux, it should be being retested, updated to the newest versions of runtime systems, etc.
2 is about the attitude that Python 3 was an error and so some people will stay with Python 2. The Python 2 → Python 3 change was very badly handled and
Two principle reasons:
- There was a lot of Python 2 code out there, and people have seen no reasons to update it to Python 3.
- There remains a lot of Python 2 code out there that is not being updated to use Python 3.
1 is about people avoiding working on what is supposedly working code. This is really just bad code management, code should always be seen as in flux, it should be being retested, updated to the newest versions of runtime systems, etc.
2 is about the attitude that Python 3 was an error and so some people will stay with Python 2. The Python 2 → Python 3 change was very badly handled and created a rift in the Python community which for some is still an issue. In the main though Python 3 is now the One True Python™ for everyone, Python 2 is drifting off into the sunset of life. Any Python package that is still Python 2 only should be considered “dead software” and avoided.
That’s a good question and has several answers. Please consider my comments to be part of the answer. The other folks have good answers as well.
- A great many Python systems were put into product before Python 3.x was released. The folks running these systems would prefer to keep a stable production environment, rather than dealing with all of the bugs that would show up in a 2.x to 3.x conversion.
- A few important libraries have not been ported to Python 3.x. Folks using these libraries are stuck with Python 2.x whether they like it or not.
- Inertia has kept Python 2.x in use in many cases. Let me
That’s a good question and has several answers. Please consider my comments to be part of the answer. The other folks have good answers as well.
- A great many Python systems were put into product before Python 3.x was released. The folks running these systems would prefer to keep a stable production environment, rather than dealing with all of the bugs that would show up in a 2.x to 3.x conversion.
- A few important libraries have not been ported to Python 3.x. Folks using these libraries are stuck with Python 2.x whether they like it or not.
- Inertia has kept Python 2.x in use in many cases. Let me offer an example. The Google Foobar challenge is Python 2.x (and Java) based. I actually don’t know why Google is still using Python 2.x for Foobar. However, I am reasonably sure that the Google folks have heard of Python 3.x.
Python 3 broke backwards compatibility.
This was a huge deal, because all of the libraries (part of what makes Python so great!) were no longer compatible, and needed to be rewritten.
By now, the vast majority of libraries are compatible with Python 3: Python 3 Wall of Superpowers
At this point, I always start new projects in Python 3. It's a cleaner, more comfortable language for me to use, and it has all the libraries I need and more. It's the clear future of Python.
The library problem has been solved, but Python 2 will stick around far longer than 2020 because of legacy applications that are
Python 3 broke backwards compatibility.
This was a huge deal, because all of the libraries (part of what makes Python so great!) were no longer compatible, and needed to be rewritten.
By now, the vast majority of libraries are compatible with Python 3: Python 3 Wall of Superpowers
At this point, I always start new projects in Python 3. It's a cleaner, more comfortable language for me to use, and it has all the libraries I need and more. It's the clear future of Python.
The library problem has been solved, but Python 2 will stick around far longer than 2020 because of legacy applications that are too expensive to be rewritten. For example, YouTube's server code is written in Python 2. However, legacy code is not what determines the future of a language.
You should probably be able to read/write Python 2, but actually spend your time writing Python 3. Knowing the important differences could score you points in a Python-based job interview, though.
Not really. Very close to 1st January 2020 CPython (The reference version from python dot org) Python2 will get its last ever update which will consist of a few critical bug fixes. I think the other versions of Python (JPython, PyPy, IronPython etc have made similar deadlines).
After that if any bug fixes or security fixes are discovered in Python2 there will be no fixes from Python dot org. There will also be no new features - there haven’t been any for a while.
I suppose that there will be some hobby developers who insist on using Python2 at home, and even some who insist on trying to fix Pyth
Not really. Very close to 1st January 2020 CPython (The reference version from python dot org) Python2 will get its last ever update which will consist of a few critical bug fixes. I think the other versions of Python (JPython, PyPy, IronPython etc have made similar deadlines).
After that if any bug fixes or security fixes are discovered in Python2 there will be no fixes from Python dot org. There will also be no new features - there haven’t been any for a while.
I suppose that there will be some hobby developers who insist on using Python2 at home, and even some who insist on trying to fix Python2 code on their own. There might even be some organisations who currently use Python2 who decide not to change their code and take the risk that no new flaws will be found, but I think that after January 2020 the majority of thefew organisations that officially use Python2 will find a way to migrate their code base.
I stopped using Python2 in 2017 (although I am just a hobby developer).
The transition from Python 2 to Python 3 is taking way longer than necessary, partly because changing anything that isn't broken is always hard, but also due to the resistance of a good part of the community against any kind of change.
For many years, some of the largest Python projects didn't support Python 3. That led credence to the thinking of your friend. But things change, and Python 3 support increase very fast over the past few years.
Overall, if I were to start a new Python project, I would clearly think about doing it with Python 3. That's where most of the new work is being done. Most
The transition from Python 2 to Python 3 is taking way longer than necessary, partly because changing anything that isn't broken is always hard, but also due to the resistance of a good part of the community against any kind of change.
For many years, some of the largest Python projects didn't support Python 3. That led credence to the thinking of your friend. But things change, and Python 3 support increase very fast over the past few years.
Overall, if I were to start a new Python project, I would clearly think about doing it with Python 3. That's where most of the new work is being done. Most of the important libraries are already Python 3 compliant. I believe that now it's just a matter of time before it becomes dominant.
That said, you friend is probably right that Python 2 will still be here in 2020. After all, COBOL is still be here, several decades after its time. But - does it make sense to move later? You're going to have work to do. Why no start it the right way now?
I most definitely am using it in production. Granted, I depend on no external libraries, projects which do use external libraries may have trouble if those aren't fully supported in Python3 yet, but in terms of its own internal stability, Python3 is mature.
The transition in version 3.0 from 2.7 by the Python team lacked the permissions to complete 32 of the remaining libraries/modules left over from 2.7 to 3.0 fully without bug issues. Reason being the creator Guido Van Rossum was too busy working for Google to approve key changes.
And in took until version 3.6 to complete 27 of those 32 modules to be converted. This upset many developers including me. But they had the most important libraries done by version 3.6 with only minor bug fixes left.
The other issue was porting everything over for every developer out there who already accumulated many s
The transition in version 3.0 from 2.7 by the Python team lacked the permissions to complete 32 of the remaining libraries/modules left over from 2.7 to 3.0 fully without bug issues. Reason being the creator Guido Van Rossum was too busy working for Google to approve key changes.
And in took until version 3.6 to complete 27 of those 32 modules to be converted. This upset many developers including me. But they had the most important libraries done by version 3.6 with only minor bug fixes left.
The other issue was porting everything over for every developer out there who already accumulated many software in many businesses and corporations up until that time. This was a fatal error on Python’s part by Rossum restricting team approved on key changes.
But they did compensate by developing a specific module for auto transition from 2.7 to 3.6 plus.
And now we have the fastest version to date and stable at 3.7.0 to 3.7.1 and back to normal again. The problem with outdated or deprecated software now is dependent on You and I.
My solution at 3.6.0 was to write a regex and string replace app that could read all my python 2.7 files one after the other to convert them all over to 3.6 plus. This is not that difficult.
You have your trans DOT py file to run and fetch list of files in a loop open them with write permission and do the regex and string replace methods all at one time per file per list of files.
Thus replacing all uppercase module imports to lowercase and changing names and paths accordingly. This works faster than anything and why 2.7 devs cant do this is beyond me.
They are missing out on the massive speed enhancements of 3.7.0 up on Windows and Linux. The team after arguing extensively with Rossum somehow convinced him to retire and finally step down to allow the team to move on without having to wait for his approvals.
On a side note every library that were name spacing out of the norm were combined putting an end to backtracking other modules repeatedly. This sped everything up.
And the issue of 2.7 having to call outside modules to work izip was a bug fix they had skipped over from 2.5. The solution to this Pep was easy they rewrote izip as zip in its own iterate-able function in the local space methods without the need to import it. Saving speed in the for loop. Deprecated processes that could never work in 2.7 were also removed.
Python now is lean mean and a fast machine.
That is as best as I understand it.
Contrary to popular belief, Python 3 features some significant improvements over Python 2. The differences are very subtle, but very significant, especially when you get into meta-programming.
Broadly speaking, I think it's a lot cleaner:
- zip(), range(),... are all iterators by default
- dict.keys(), dict.values(), dict.items() instead of dict.iterkeys() etc.
- print is a function
- 1/2 returns a float, 1//2 returns a (truncated) integer
- booleans are keywords (e.g. in Python 2, you could do True=False, in Python 3, this would raise a SyntaxError ("cant assign to keyword")
- non-sensical comparisons (e.g. "'
Contrary to popular belief, Python 3 features some significant improvements over Python 2. The differences are very subtle, but very significant, especially when you get into meta-programming.
Broadly speaking, I think it's a lot cleaner:
- zip(), range(),... are all iterators by default
- dict.keys(), dict.values(), dict.items() instead of dict.iterkeys() etc.
- print is a function
- 1/2 returns a float, 1//2 returns a (truncated) integer
- booleans are keywords (e.g. in Python 2, you could do True=False, in Python 3, this would raise a SyntaxError ("cant assign to keyword")
- non-sensical comparisons (e.g. "'a' < 0") will raise a TypeError
These are subtle, but the improvements add up. You will notice them once you go back from Python 3 to Python 2 and you'll hate it. Python 2 feels like an ugly mess compared to Python 3.
- nonlocal keyword, which allows you to change nonlocal variables. This cannot be done in Python 2.
- super can be called without arguments, which makes the default, single inheritance case a bit cleaner.
- extended iterable unpacking:
a, *b = range(5)
. This would raise a SyntaxError in Python 2. - yield from syntax.
- unicode by default (!). This is one of the most major improvements by far.
- ...
Python 3 is a much better language, but the differences are relatively subtle unless you do a lot of advanced and/or meta-programming.
Unless you have a very good reason to stick with Python 2 (legacy, packages not ported to Python 3 yet,...), you should go with Python 3. It is the future and it's simply a much better language. The more advanced your programming, the more you will notice the improvements.
In due time.
As others have said it will "catch on" when there's a critical mass of the old code ported to it, new code written in it, and features (possibly including performance) which make it sufficiently compelling.
The largest barriers to adoption seem to surround the distinction between strings and bytes which was, apparently, a necessary evil in order to fully support internationalization (i18n).
The changes from print (as a statement) to print() as a function, and from raw_input() to input() (and entailing the quite reasonable use of eval(input()) to get the old behavior of input() in the
In due time.
As others have said it will "catch on" when there's a critical mass of the old code ported to it, new code written in it, and features (possibly including performance) which make it sufficiently compelling.
The largest barriers to adoption seem to surround the distinction between strings and bytes which was, apparently, a necessary evil in order to fully support internationalization (i18n).
The changes from print (as a statement) to print() as a function, and from raw_input() to input() (and entailing the quite reasonable use of eval(input()) to get the old behavior of input() in the extremely rare cases where that's intended) are relatively superficial. They clean up warts in the original language and they affect some of the things that programmers learn very early about the language. However, in practice, they don't make that much difference for serious programming. (Most I/O has to be wrapped in some layer of abstraction in most programming, anyway. So these changes are somewhat isolated).
On the other hand manipulation of character strings is pervasive ... and the distinctions between string/encodings and simple, old-fashioned, byte strings affect lots of code in ways that are semantically far deeper than mere syntax changes.
I honestly haven't kept up on 3.1 and 3.2 development. For my rather narrow purposes (mostly sysadmin oriented) the 2.5 and 2.7 CPython implementations more than suffice.
What do you want to do with this Python knowledge? The answer to that question will help you determine what version to target initially (yes I said initially, no matter what you will probably eventually learn both Python 2 and 3).
If you are just programming personal projects for yourself, then the libraries you would use are the key points. Look through them and if you can't code the project without one from version 2, then version 2 it is.
If you are targeting a job where you will create programs from scratch I recommend Python version 3. This will allow you to create a large buffer between
What do you want to do with this Python knowledge? The answer to that question will help you determine what version to target initially (yes I said initially, no matter what you will probably eventually learn both Python 2 and 3).
If you are just programming personal projects for yourself, then the libraries you would use are the key points. Look through them and if you can't code the project without one from version 2, then version 2 it is.
If you are targeting a job where you will create programs from scratch I recommend Python version 3. This will allow you to create a large buffer between when you create the program and when Python 4 is released and you need to upgrade to that.
If you are targeting a job where you will me working with legacy code, then choose Python 2.
In the end, it makes the most sense to choose the language that will give you the most benefit overall professionally and personally.
Whatever version you choose good luck and have fun!
I have seen a lot of answers and agree with most, but many fail to say one of the huge reasons Python will keep gaining popularity and exposure. That is universities are adopting Python for scientific and data analysis. Heck, even my old university's mechanical engineering department is using Python in some courses.
This means people that never would have been exposed to programming at all are now using Python as a proxy calculator and of course when most people of that mindset have a tool - they tinker with it.
I use and write Python daily, along with a few c based languages. Python is a Swis
I have seen a lot of answers and agree with most, but many fail to say one of the huge reasons Python will keep gaining popularity and exposure. That is universities are adopting Python for scientific and data analysis. Heck, even my old university's mechanical engineering department is using Python in some courses.
This means people that never would have been exposed to programming at all are now using Python as a proxy calculator and of course when most people of that mindset have a tool - they tinker with it.
I use and write Python daily, along with a few c based languages. Python is a Swiss Army knife of programming languages. It has less to do with the language and more to do with the community.
When you have a group of higher education individuals pushing an open source language - documentation and expansion happens extremely well. That, coupled with the fact that Python is widely used in scraping, network programming, web applications, data analysis, machine learning, and many other different aspects of programming, and you have a recipe for language success.
However, does this mean that Python is the best choice for everyone? No. Why? Because many applications are not well suited for Python. For instance, electrical engineers use C++ in college (I think it should be C, haha). Why? Least common denominator. Micro controllers almost always utilize a C compiler, I would venture to say most - of any, lack Python or any compatible variant that would allow Python to run.
Another problem, GIL, global interpreter lock. This is why I use C# for many of our enterprise applications, because multi core and asynchronous programming is not fully possible in Python and probably the easiest in C# to fully implement in an application. Async and await can make a near novice partially proficient in C#, haha.
That being said - I see Python being the JavaScript of general programming. That means it will be used often and with increasing frequency, and only grow as a language. JavaScript as a front end web language, becoming backend with node as well, is already a staple in any web programmers Arsenal, it has to be to get things done.
Hope this helps.
Well, Python has a release cadence of 12 months, so the future should either be 3.12 or something in the 4 series. XD
After five years, Python 3.7 will no longer receive upstream security updates, so you’re going to want to be on a more recent version at that time.
There are some Python versions which make it into LTS linux distribution releases. For example, Python 3.6 is in RHEL 8, and Red Hat will support it for ten years. As far as I know, Python 3.7 isn’t in a situation where it will be supported by a Linux distro beyond the normal lifespan.
Of course, Python is open source, so you could the
Well, Python has a release cadence of 12 months, so the future should either be 3.12 or something in the 4 series. XD
After five years, Python 3.7 will no longer receive upstream security updates, so you’re going to want to be on a more recent version at that time.
There are some Python versions which make it into LTS linux distribution releases. For example, Python 3.6 is in RHEL 8, and Red Hat will support it for ten years. As far as I know, Python 3.7 isn’t in a situation where it will be supported by a Linux distro beyond the normal lifespan.
Of course, Python is open source, so you could theoretically fork any version you like and keep applying patches indefinitely.
You ask me, what is the future? I'll say, Python.
You may not agree with me completely but see that this way.
According to all the current researches, the future ( atleast the near future) is going to be Artificial Intelligence and Machine Learning. Python is a programming language getting popular day by day due to its reduced complexity and the freedom it provides to work in various sectors of programming.
Now how these two things are correlated? Because of the above factors mentioned, Python is considered one of the best languages to design a project related to AI and Machine Learning ( althoug
You ask me, what is the future? I'll say, Python.
You may not agree with me completely but see that this way.
According to all the current researches, the future ( atleast the near future) is going to be Artificial Intelligence and Machine Learning. Python is a programming language getting popular day by day due to its reduced complexity and the freedom it provides to work in various sectors of programming.
Now how these two things are correlated? Because of the above factors mentioned, Python is considered one of the best languages to design a project related to AI and Machine Learning ( although there are other things too used for that). So Python serves to be the best ingredient of the dessert.
When you know the best ingredient, then why you wouldn't be using it in the future? So Python has a good future in this world where AI and ML studies are taking leaps in their growth day by day.
Thank You!
Well, a lot of things change in Python3, and perhaps your professor fears change.
Starting from the top (at Python 3.0):
1. Python 2 is most likely what's come installed in your favorite, stable server distro (Debian, CentOS), but it's also likely very easy to get Python 3 running as the default on these servers, either using backports or something like virtualenv
2. Python 3 has mostly the same syn
Well, a lot of things change in Python3, and perhaps your professor fears change.
Starting from the top (at Python 3.0):
1. Python 2 is most likely what's come installed in your favorite, stable server distro (Debian, CentOS), but it's also likely very easy to get Python 3 running as the default on these servers, either using backports or something like virtualenv
2. Python 3 has mostly the same syntax as Python 2.7, which has some additional syntax that's now in common use that is NOT in Python 2.6 (FYI)
3.
1. print is now a function in Python 3, which, despite having used it extensively, always trips me up the first time I use it in a while
4. Things that used to return lists now return iterators, which makes a lot of sense if you think about it
5. Unicode is the default for strings, which, once again, makes a lot of sense for the modern age
6. You can use "Extended Iterable Unpacking", which is pretty damn neat
Going up to Python 3.4 (which is what version we've pinned our apps to at work):
1. Introduction of ordered dictionaries, which have their uses
2. Improved unittest annotation for skipping tests conditionally (useful for multiplatform test...
All you are probably going to get here is biased answers. People who don't use Python much are just going to say "no." Python fanboys are going to say "heck ya!"
That said, I am a Python fanboy, and here's my biased answer:
Heck ya! Why?
Python is very noob-friendly, but also allows itself to get as complex as you need it to.
Python is truly multi-purpose. I say truly because there are many multi-purpose languages out there, but Python actually does it right and has a community to back it up. For example, Ruby is a general purpose programming language, but 99% of its use is just for web develop
All you are probably going to get here is biased answers. People who don't use Python much are just going to say "no." Python fanboys are going to say "heck ya!"
That said, I am a Python fanboy, and here's my biased answer:
Heck ya! Why?
Python is very noob-friendly, but also allows itself to get as complex as you need it to.
Python is truly multi-purpose. I say truly because there are many multi-purpose languages out there, but Python actually does it right and has a community to back it up. For example, Ruby is a general purpose programming language, but 99% of its use is just for web development with Ruby on Rails. Python does web development with hugely popular frameworks (Django, Flask). Python does data analysis with hugely popular frameworks (Pandas, NumPy, Matplotlib), and the list goes on.
People continue talking about Python 2 and 3 fragmenting the community, it really isn't happening all that much. People are mostly just making excuses why to not switch from 2 to 3 (it can be a pain if you have a large project).
Finally, just let the stats speak for themselves. You can use a variety of sources, just Google "programming languages by popularity" or use or whatever you like.
I don't see any other language with as much of a future as Python.
But of course, I am a Python fanboy. I make my entire living off of Python, so it gets all my love.
Honestly who would possibly know? I can tell you this thou, Python like other High Level Languages is updated, tested and evaluated daily. At version 3.0 up all Python Versions are all being developed in Visual Studio for Windows, Linux, Mac.
And this has lead to a mass influx of adding C++ Libraries at will and easily. Here are a few that come to mind—-
- GTK
- Wx
- QT
- OpenGL
- Win32
- REGEX
- Node JS
All of them can be installed using Python’s Pip Installer in two minutes or less and they are ready to use. Cannot do it that easily in C++.
In reply to someone else’s answer here…. Python executes in a fully Already
Honestly who would possibly know? I can tell you this thou, Python like other High Level Languages is updated, tested and evaluated daily. At version 3.0 up all Python Versions are all being developed in Visual Studio for Windows, Linux, Mac.
And this has lead to a mass influx of adding C++ Libraries at will and easily. Here are a few that come to mind—-
- GTK
- Wx
- QT
- OpenGL
- Win32
- REGEX
- Node JS
All of them can be installed using Python’s Pip Installer in two minutes or less and they are ready to use. Cannot do it that easily in C++.
In reply to someone else’s answer here…. Python executes in a fully Already Compiled C Language State. And in so doing its main entry point allows it to tie into anything from C, C++, C# or any other language easier than any other High Level Language can do so.
Some argue it cannot work with massive Libraries. Well there are many doing it with massive Libraries, here are a few.
- DropBox
- Blender Render
- Google Sites
- Google Website
- YouTube
- Quora
The future is not for scripting languages
We already have many of them used by professional developers in practical and real world projects.
Today we have 3 common types of programming languages
(1) Language that focus on performance and memory usage like (Assembly, C, C++, etc)
(2) Language that focus on Object-Oriented, Safe development (Static Typing, Strong Typing, Garbage Collector) like C#, Java, etc
(3) Languages that focus on productivity and flexibility, Scripting languages with many dynamic features (Dynamic Typing, Eval(), functional programming, Meta-Programming, etc) like (Python, Ruby
The future is not for scripting languages
We already have many of them used by professional developers in practical and real world projects.
Today we have 3 common types of programming languages
(1) Language that focus on performance and memory usage like (Assembly, C, C++, etc)
(2) Language that focus on Object-Oriented, Safe development (Static Typing, Strong Typing, Garbage Collector) like C#, Java, etc
(3) Languages that focus on productivity and flexibility, Scripting languages with many dynamic features (Dynamic Typing, Eval(), functional programming, Meta-Programming, etc) like (Python, Ruby and the Ring programming language).
All of these types or what will follow them like Rust, D, Swift, etc (will not be the future)
Because if you know the future, Then It’s not the future! It’s just an extension to the present unless you will invent it (Alan Kay: The best way to predict the future is to invent it.)
You may check out the latest report from Codementor: What Programming Language Should a Beginner Learn in 2015?
Python is a highly recommended language for beginners, and is the most popular introductory language at Top U.S. Universities. Developers have used Python to build desktop apps and web apps alike, and it has great tools for data mining. In addition, Python is particularly popular with the academic community for scientific computing and bioinformatics.
Google, Dropbox, Pinterest, Instagram, Reddit, BitTorrent, Civilization IV, and more have been built with Python.
Here you can see that
You may check out the latest report from Codementor: What Programming Language Should a Beginner Learn in 2015?
Python is a highly recommended language for beginners, and is the most popular introductory language at Top U.S. Universities. Developers have used Python to build desktop apps and web apps alike, and it has great tools for data mining. In addition, Python is particularly popular with the academic community for scientific computing and bioinformatics.
Google, Dropbox, Pinterest, Instagram, Reddit, BitTorrent, Civilization IV, and more have been built with Python.
Here you can see that developers who know Python, Ruby, C++, or Objective C appear to have higher starting salaries, but also more limited salary potential. Python and C++ tend to pay at the higher end of the potential salary range.
However, if your goal is to work at a startup, then perhaps the job trends from one search. all jobs. Indeed.com is not a good indicator. AngelList is pretty much the go-to place for startup job postings, so we’ll take a look at the demand for programming skills based on the software developer ads in AngelList.
Again, JavaScript turns out to be the most demanded skill, but startups seem to favor Python and Ruby (on Rails) more than Java, C, C++, or C#.
For more info plz check here:
What Programming Language Should a Beginner Learn in 2015?
Hope this info may help you somehow :)
Well, what happened after Return of the Jedi?
Python is a high-level, interpreted programming language that has gained significant popularity over the years. It is widely used in various fields, including data science, web development, machine learning, and artificial intelligence. Python has a broad range of applications and is supported by a vast community of developers, making it a go-to language for many developers. As a result, it has a promising future with vast potential.
Let’s explore the future scope of Python and discuss its potential applications in various fields.
- Artificial Intelligence (AI) and Machine Learning (ML)
Python is
Python is a high-level, interpreted programming language that has gained significant popularity over the years. It is widely used in various fields, including data science, web development, machine learning, and artificial intelligence. Python has a broad range of applications and is supported by a vast community of developers, making it a go-to language for many developers. As a result, it has a promising future with vast potential.
Let’s explore the future scope of Python and discuss its potential applications in various fields.
- Artificial Intelligence (AI) and Machine Learning (ML)
Python is widely used in the field of AI and ML. It is one of the most popular programming languages for developing AI and ML models. Many popular ML frameworks such as TensorFlow, PyTorch, and Keras use Python as their primary language. These frameworks have made it easy to develop and deploy AI models, making Python a go-to language for AI and ML developers.
In the future, we can expect Python to play an even more significant role in the field of AI and ML. With the advent of new technologies such as deep learning and neural networks, Python will continue to be the primary language for developing cutting-edge AI and ML models. Python's ease of use, vast community support, and robust libraries will make it the go-to language for developing advanced AI applications. - Web Development
Python is also widely used in web development. Many popular web frameworks such as Django and Flask use Python as their primary language. These frameworks have made it easy to develop web applications, making Python a popular choice for web developers.
In the future, we can expect Python to continue to be a popular choice for web development. With the increasing demand for web applications, Python's ease of use and vast community support will make it a go-to language for web developers. Additionally, Python's robust libraries will make it easy to develop complex web applications. - Data Science
Python is widely used in the field of data science. Many popular data science libraries such as NumPy, Pandas, and Scikit-learn use Python as their primary language. These libraries have made it easy to perform complex data analysis tasks, making Python a popular choice for data scientists.
In the future, we can expect Python to continue to be a popular choice for data science. With the increasing demand for data analysis, Python's ease of use and vast community support will make it a go-to language for data scientists. Additionally, Python's robust libraries will make it easy to perform complex data analysis tasks. - Internet of Things (IoT)
Python is also gaining popularity in the field of IoT. Many IoT devices use Python for their development. Python's ease of use and vast community support make it a popular choice for IoT developers.
In the future, we can expect Python to play an even more significant role in the field of IoT. With the increasing demand for IoT devices, Python's ease of use and vast community support will make it a go-to language for IoT developers. Additionally, Python's robust libraries will make it easy to develop complex IoT applications. - Gaming
Python is also used in the development of games. Many game engines such as Pygame and Panda3D use Python as their primary language. These engines have made it easy to develop games, making Python a popular choice for game developers.
In the future, we can expect Python to continue to be a popular choice for game development. With the increasing demand for games, Python's ease of use and vast community support will make it a go-to language for game developers. Additionally, Python's robust libraries will make it easy to develop complex games. - Desktop Applications
Python is also used in the development of desktop applications. Many popular desktop applications such as Dropbox and Blender use Python as their primary language. These applications have made it easy to develop complex desktop applications, making Python a popular choice for desktop application developers.
In the future, we can expect Python to continue to be a popular choice for desktop application development. With the increasing demand for desktop applications, Python's ease of use and vast community support will make it a go-to language for desktop application developers. Additionally, Python's robust libraries will make it easy to develop complex desktop applications. - Education
Python is a popular choice for teaching programming to beginners. Its simple syntax and ease of use make it an ideal language for learning programming. Many universities and schools are already teaching Python as a first language.
In the future, we can expect Python to continue to be a popular choice for teaching programming. With the increasing demand for programming skills, Python's ease of use and vast community support will make it an ideal language for teaching programming to beginners. - Robotics
Python is also gaining popularity in the field of robotics. Many robotics platforms such as ROS (Robot Operating System) use Python as their primary language. Python's ease of use and vast community support make it a popular choice for robotics developers.
In the future, we can expect Python to play an even more significant role in the field of robotics. With the increasing demand for robotics, Python's ease of use and vast community support will make it a go-to language for robotics developers. Additionally, Python's robust libraries will make it easy to develop complex robotics applications. - Cloud Computing
Python is also widely used in the field of cloud computing. Many cloud platforms such as AWS (Amazon Web Services) and Google Cloud Platform use Python as their primary language. Python's ease of use and vast community support make it a popular choice for cloud developers.
In the future, we can expect Python to continue to be a popular choice for cloud computing. With the increasing demand for cloud computing, Python's ease of use and vast community support will make it a go-to language for cloud developers. Additionally, Python's robust libraries will make it easy to develop complex cloud applications. - Cybersecurity
Python is also gaining popularity in the field of cybersecurity. Many cybersecurity tools such as Scapy and Nmap use Python as their primary language. Python's ease of use and vast community support make it a popular choice for cybersecurity professionals.
In the future, we can expect Python to play an even more significant role in the field of cybersecurity. With the increasing demand for cybersecurity, Python's ease of use and vast community support will make it a go-to language for cybersecurity professionals. Additionally, Python's robust libraries will make it easy to develop complex cybersecurity tools.
Conclusion
In conclusion, Python has a promising future with vast potential in various fields. Its ease of use, vast community support, and robust libraries make it a popular choice for developers. We can expect Python to continue to play a significant role in various fields, including AI and ML, web development, data science, IoT, gaming, desktop application development, education, robotics, cloud computing, and cybersecurity. Therefore, learning Python is a wise decision for anyone interested in pursuing a career in technology.
If you found this answer informative then do share it with your friends and colleagues and don’t forget to give it an upvote! Happy Reading guys :)
Q: What should I learn after finishing Python 3?
I am still learning Python having started using it at version 1.5. So I’m more than a bit surprised that you can “finish” Python 3.
I recommend that you find a project or get a job where you actually use Python 3. That will drive your learning well past the arm-chair phase and into plumbing its depths. Python is a really versatile language for “getting things done” where high performance is not needed. Most programming pursuits do not require high performance.
If you need high performance then learn C. C is good at high performance and getting near
Q: What should I learn after finishing Python 3?
I am still learning Python having started using it at version 1.5. So I’m more than a bit surprised that you can “finish” Python 3.
I recommend that you find a project or get a job where you actually use Python 3. That will drive your learning well past the arm-chair phase and into plumbing its depths. Python is a really versatile language for “getting things done” where high performance is not needed. Most programming pursuits do not require high performance.
If you need high performance then learn C. C is good at high performance and getting near metal. The bonus is that you can wrapper performance or interface critical C routines in Python for future use. Win-win that.
Well, I am attempting an answer now in 2017. I have been using Python on and off since about 1994, 1995. The problems I currently work on are in Scientific Computing and web development. From my experience I don’t see Python 2 as a superior choice, rather it is probably a more conservative choice. As people have mentioned there are still libraries that only exist for version 2 though the situation is much better than a few years ago. I used it as the main version until last year when I realized all the libraries I use are now available for version 3, e.g. numpy, scipy, rpy, pandas, jupyter, sc
Well, I am attempting an answer now in 2017. I have been using Python on and off since about 1994, 1995. The problems I currently work on are in Scientific Computing and web development. From my experience I don’t see Python 2 as a superior choice, rather it is probably a more conservative choice. As people have mentioned there are still libraries that only exist for version 2 though the situation is much better than a few years ago. I used it as the main version until last year when I realized all the libraries I use are now available for version 3, e.g. numpy, scipy, rpy, pandas, jupyter, scikit-learn, tensorflow, flask…
One of the problems I still see which makes transition harder are server operating systems like CentOS, which are more conservative and therefore make it hard to use Python 3 as the default choice.
Other than that I find Python 3 to be a nice update, it is more consistent and works better with Unicode. For all projects that I work on I try to support both versions because for the most part the differences are not so large. One of the main pitfalls for me personally is that integer division can behave differently in version 2 and 3.
It took longer than expected because the Python Development team underestimated how quickly the community would respond to the early versions of Python3
The issue here is that the community, faced with :
- A new version (Python3.1 etc) which would take time to migrate to
- The new version which offered very little in terms of benefits
- A old version (Python 2.7) which still worked and was supported and even getting new features
Saw no benefit in putting in the work to migrate existing code to Python3.
It was only when Python3 started getting new features and started getting better than Python2 across the
It took longer than expected because the Python Development team underestimated how quickly the community would respond to the early versions of Python3
The issue here is that the community, faced with :
- A new version (Python3.1 etc) which would take time to migrate to
- The new version which offered very little in terms of benefits
- A old version (Python 2.7) which still worked and was supported and even getting new features
Saw no benefit in putting in the work to migrate existing code to Python3.
It was only when Python3 started getting new features and started getting better than Python2 across the board, and the PSF started talking about the need to retire Python2 did most of the community finally see the Benefits of migration.
It should be remembered that with a few small exceptions every single library or package on PyPi (all 200,000 of them) are produced without any remuneration; they are produced by the community because individuals volunteer their spare time and effort to make them. So until it was a benefit to migrate code to Python 3 it wasn’t going to happen for many of the big projects.
In November 2019 the situation is different - Python 3.7 is significantly better than Python 2.7 in many different ways, even for existing code bases; Python 2.7 is no longer getting significant new features and from 2020 will stop getting any sort of bug fix at all and the migration to Python3 is more or less complete - it is estimated that around 95% or more of All packages on PYPI have a Python3 compatible version.
I use Python in Data Science space and here is where I see Python going for Data Engineers/Scientists :
1. Python2 and Python3 would finally merge up by the time Python4 (or some equivalent grand 3.x release shows up ). Hopefully no GIL by then .
2. Optional Static typing : Guido seems to be backing static typing project mypy [Python-ideas] Proposal: Use mypy syntax for function annotations
3. Better speedup tools: I can see some new awesome tools coming up to speed up Python code to C levels. We already have Numpy, Scipy, Cython, Numba, Parakeet , Theano , GNumpy , Pythran , PyCUDA , PyOpen
I use Python in Data Science space and here is where I see Python going for Data Engineers/Scientists :
1. Python2 and Python3 would finally merge up by the time Python4 (or some equivalent grand 3.x release shows up ). Hopefully no GIL by then .
2. Optional Static typing : Guido seems to be backing static typing project mypy [Python-ideas] Proposal: Use mypy syntax for function annotations
3. Better speedup tools: I can see some new awesome tools coming up to speed up Python code to C levels. We already have Numpy, Scipy, Cython, Numba, Parakeet , Theano , GNumpy , Pythran , PyCUDA , PyOpenCL , PyViennaCL and many other projects doing this.
4. Alternative JIT Python implementations : Faster alternative Python implementations like PyPy (which already has a numpy counterpart called numpypy ) and Pyston .
5. Interfaces with languages of similar syntax: Julia (JIT compiled) and Nim (a compiled system language) seem to be two languages which are very similar in syntax to Python. Julia is already well embraced by Python community, I think same will happen for Nim .
6. Better libraries coming up : Scikit Learn , Pandas and statmodels keeps evolving everyday, but then we have new awesome libraries coming up like PyLearn2 , PyStruct , Scikit_Tensor , HyperOpt , sklearn-theano . Too many to count here .
I'm not the best person to answer this but I can start. There were several issues with Python 2 which showed the history of computing from about 25 years ago and I think many people realized were not good things to keep. Python 3 updated those things.
- Use of ASCII character set. Python 3 uses Unicode, defaults to UTF-8 so ASCII still works but now you are not resstricted to English strings, comments, variable names, everything.
- Range returned a list. Python 2 at some point grew xrange, which is a generator. It is obvious that making a list is dumb. Try range from 0 to 5 billion and see if it wor
I'm not the best person to answer this but I can start. There were several issues with Python 2 which showed the history of computing from about 25 years ago and I think many people realized were not good things to keep. Python 3 updated those things.
- Use of ASCII character set. Python 3 uses Unicode, defaults to UTF-8 so ASCII still works but now you are not resstricted to English strings, comments, variable names, everything.
- Range returned a list. Python 2 at some point grew xrange, which is a generator. It is obvious that making a list is dumb. Try range from 0 to 5 billion and see if it works, or how long it takes in Python 2. In Python 3 range is what xrange is in Python 2, there is no xrange in Python 3.
- Classes: in most languages all classes derive from something. In Python 2 they didn't have to, in Python 3 they do.
- Scoping: Python 2 has local and global scope. This forced some pretty strange constructs, like defining a function within another function so the outer function's variables are still local. Python 3 grew “nonlocal” scope, so normal coding will now work. This has been back ported to recent Python 2.7.x versions, import it from futures.
- Print was a statement in Python 2. It worked well, but now print is a function. Works just as well and the arguments for print are enclosed in parentheses. There are some changes to how you format due to this change.
- The big one: Python 3 has a bytes type. You don't have to read in binary as string data and hope you know how to manipulate it to keep all 8 bits. You can go from bytes to strings and vice versa, but bytes are well supported. This is all I can write right now, I'm sure there are other more internal reasons for the incompatible change.