Introduction:
This is the first question that comes to everyone’s mind when starting development with Python. Python 2 was released 2000 and Python 3 was in 2008. Python 3 is the latest python version and this was started to fix all problems in Python 2. Python 3 is backward incompatible.
The development of Python 2 was stopped in 2020 and it was discontinued. So, if you are just starting Python, you can start with Python 3. In this post, I will discuss on these two versions, which one to choose for learning and the differences between Python 2 and Python 3.
Python 2 or Python 3:
For someone who is starting to learn Python, Python 3 is the version to start with. Because,
- Most libraries are in Python 3 or slowly all projects are migrating to Python 3.
- Python 3 is easy to learn and the syntax is easy to understand than Python 2.
- The community support for Python 3 is better than Python 2.
- If you want to learn machine learning, data science or AI, you need to learn Python 3.
Difference between Python 2 vs Python 3:
We learned the basic differences between Python 2 and Python 3 and I hope that you got an idea on which one to pick to learn.
Let’s take a look at the main differences between these versions with examples:
-
Python 2 started in 2000 and python 3 in 2008. Python 2 is discontinued and it will no longer be maintained starting from 2020.
-
Python 3 is not backward compatible. We can port a project from Python 2 to Python 3. But, Python 3 to Python 2 is not possible.
-
The syntax of Python 3 is simpler and easy to understand, but the syntax of Python 2 is difficult to understand.
-
If we divide two integers in Python 2, we will get an integer. But, if we divide two integers in Python 3, we will get a float. For example:
print(10/3)
It will give:
$ python2 example.py
3
$ python3 example.py
3.3333333333333335
$
- The string is stored as Unicode in Python 3. But, string type is ASCII in Python 2. For example,
h = 'hello'
h1 = u'hello'
print(type(h))
print(type(h1))
It will print:
$ python2 example.py
<type 'str'>
<type 'unicode'>
$ python3 example.py
<class 'str'>
<class 'str'>
We have to use u to create an unicode string in Python 2.
- print is different in both Python 2 and Python 3. print is a keyword in Python 2 which is replaced by print() function in Python 3. In Python 2, you have to use:
print 'hello world'
In Python 3, you have to use:
print('hello world')
- xrange is no longer available in Python 3. We have to use range function. Both are different. xrange returns a xrange object, but range returns a list.
for i in xrange(3):
print i
If you run this in Python 2, it will print:
0
1
2
If you want to write this function in Python 3, it will be as like below:
for i in range(3):
print(i)
It will give the same result.
- Raising an exception is different in Python 2 and Python 3. In python 2, we can raise an exception as like:
raise NameError, 'name error'
But, in Python 3, we have to enclose the arguments in parenthesis:
raise NameError('name error')
- Handling exception is also different in Python 2 and Python 3. We have to use ‘as’ to handle exceptions in Python 3. For example, in Python 2, we can handle an exception as like below:
try:
blah
except NameError, e:
print e, 'exception !!'
It will print:
name 'blah' is not defined exception !!
In Python 3, it will be as like below:
try:
blah
except NameError as e:
print(e, 'exception !!')
- Global variables might change if we use them inside another loop in Python 2. In Python 3, they never change. For example,
i = 10
print(i)
[i for i in range(5)]
print(i)
If I run this in Python 2, it will print:
10
4
The value of i changed as we used it in the loop. But, if we have to use it in Python 3,
i = 10
print(i)
[i for i in range(5)]
print(i)
It will print:
10
10
- The input function reads the data as int in Python 2. This reads as a string in Python 3.
v = input('Enter a value: ')
print(type(v))
It will give:
$ python2 example.py
Enter a value: 123
<type 'int'>
$ python3 example.py
Enter a value: 123
<class 'str'>
We have to use raw_input in Python 2 to read the input as a string.
You might also like:
- Python rstrip() method explanation with example
- Python ticket booking program with JSON data
- Python program to check if a number is a disarium number or not
- 2 ways to check if a number is Pronic number or not in Python
- Python numpy square method explanation with examples
- Python program to merge a dictionary to a tuple
- Python dictionary fromkeys method
- Python dictionary pop method explanation with examples