Python 3 was first released in 2008 as a major revision of the language that aimed to correct flaws in the Python 2 language design.
While Python 2 development stopped in 2020, Python 3 is still actively developed and has become the standard version for new Python projects.
Here are some of the key differences between Python 2 and Python 3:
- Print is a statement in Python 2 and a function in Python 3.
The print() function was introduced in Python 3. - Python 3 uses Unicode string types by default instead of ASCII strings like in Python 2.
This allows Python 3 to natively handle text encoding and work seamlessly with international characters. - Python 3 features new syntax like the f-string for string formatting. Python 2 uses the old % formatting syntax.
- Python 3 embraces iterators and generators fully. Some Python 2 iterator patterns had to be encoded as workarounds but work naturally in Python 3.
- Exception handling is smoother in Python 3 with the addition of the as keyword for extracting error messages cleanly.
- Python 3 does away with old features like xrange() and .keys()/.values() returning lists instead of efficient iterators.
- The new async/await keywords introduce native asynchronous programming in Python 3, avoiding callback hell.
- Python 3 code runs faster overall than equivalent Python 2 code because of under-the-hood optimizations.
- Python 3’s int type has unlimited size unlike Python 2’s int type.
- Python 3 features cleaner module reorganization like new IO libraries and error handling in subdirectories.
The clear advantages Python 3 provides make it the ideal choice for new Python projects. Key changes allow for cleaner, more modern code. Python 3 also continues to receive improvements while Python 2 is end-of-life.
Migrating legacy Python 2 code to Python 3 is highly recommended.
Resources: