12/08/2018, 13:16

Những điểm khác nhau quan trọng giữa Python 2.x và Python 3.x

1. Division operator Nếu bạn đang có một công việc nâng cấp phiên bản Python, vậy hãy chú ý tới phép chia. Xem ví dụ sau đây nhé. print 7 / 5 print - 7 / 5 Output in Python 2.x: 1 -2 Output in Python 3.x: 1.4 -1.4 2. Print function Đây là một trong những sự thay đổi ...

1. Division operator

Nếu bạn đang có một công việc nâng cấp phiên bản Python, vậy hãy chú ý tới phép chia. Xem ví dụ sau đây nhé.

print 7 / 5
print -7 / 5
Output in Python 2.x:
1
-2

Output in Python 3.x:
1.4
-1.4

2. Print function

Đây là một trong những sự thay đổi được biết đến nhiều nhất từ bản Python 2.x lên Python 3.x

print 'Hello, Geeks'      # Python 3.x doesn't support
print('Hope You like these facts')
Output in Python 2.x:
Hello, Geeks
Hope You like these facts

Output in Python 3.x:
File "a.py", line 1
    print 'Hello, Geeks'
                       ^
SyntaxError: invalid syntax

3. Unicode

Trong Python 2.x, kiểu mặc định của String là ASCII, nhưng ở Python 3.x kiểu mặc định của String là Unicode

print(type('default string '))
print(type(u'string with b '))
Output in Python 2.x (Unicode and str are different):
<type 'str'>
<type 'unicode'>

Output in Python 3.x (Unicode and str are same):
<class 'str'>
<class 'str'>

4. Xrange

for x in xrange(1, 5):
    print(x),

for x in range(1, 5):
    print(x),
Output in Python 2.x:
1 2 3 4 1 2 3 4

Output in Python 3.x:
NameError: name 'xrange' is not defined

5. Error Handling

Đây là một thay đổi nhỏ trên phiên bản 3.x, từ khoá as đã trở thành bắt buộc

Kiểm tra không có từ khoá as trong 2 phiên bản Python

try:
    trying_to_check_error
except NameError, err:
    print err, 'Error Caused'   # Would not work in Python 3.x
Output in Python 2.x:
name 'trying_to_check_error' is not defined Error Caused

Output in Python 3.x :
File "a.py", line 3
    except NameError, err:
                    ^
SyntaxError: invalid syntax

Kiểm tra khi có từ khoá as trong 2 phiên bản Python

try:
     trying_to_check_error
except NameError as err: # 'as' is needed in Python 3.x
     print (err, 'Error Caused')
Output in Python 2.x:
(NameError("name 'trying_to_check_error' is not defined",), 'Error Caused')

Output in Python 3.x:
name 'trying_to_check_error' is not defined Error Caused
0