Bài 2: Python3 - Có gì mới : - Học lập trình python 3

Đăng bởi: Admin | Lượt xem: 2018 | Chuyên mục: Python


1. The __future__ module


351/5000Python 3.x giới thiệu một số từ khóa và tính năng không tương thích với Python 2 có thể được nhập qua mô-đun __future__ được tích hợp sẵn trong Python 2. Bạn nên sử dụng __future__, nếu bạn đang lập kế hoạch hỗ trợ Python 3.x cho mã của mình.

Ví dụ: nếu chúng ta muốn chia số nguyên của Python 3.x trong Python 2, hãy thêm câu lệnh nhập sau.
from __future__ import division

2. Hàm print

Thay đổi đáng chú ý nhất và được biết đến rộng rãi nhất trong Python 3 là cách hàm print được sử dụng. Việc sử dụng dấu ngoặc đơn () với hàm in hiện là bắt buộc. Nó giống trong Python 2.
print "Hello World" #is acceptable in Python 2
print ("Hello World") # in Python 3, print must be followed by ()
Hàm print chèn một dòng mới vào cuối,. Trong Python 2, nó có thể bị chặn bằng cách đặt ',' vào cuối. Trong Python 3, "end = ''" thêm dấu cách thay vì dòng mới.
print x,           # Trailing comma suppresses newline in Python 2
print(x, end=" ")  # Appends a space instead of a newline in Python 3

3. Đọc Input từ bàn phím :

Python 2 có hai phiên bản của hàm đầu vào, input () và raw_input (). Hàm input () xử lý dữ liệu nhận được dưới dạng chuỗi nếu nó được bao gồm trong dấu ngoặc kép '' hoặc "", nếu không, dữ liệu được coi là số.
Trong Python 3, hàm raw_input () không được dùng nữa. Hơn nữa, dữ liệu nhận được luôn được coi là chuỗi.
In Python 2

>>> x = input('something:') 
something:10 #entered data is treated as number
>>> x
10

>>> x = input('something:')
something:'10' #entered data is treated as string
>>> x
'10'

>>> x = raw_input("something:")
something:10 #entered data is treated as string even without ''
>>> x
'10'

>>> x = raw_input("something:")
something:'10' #entered data treated as string including ''
>>> x
"'10'"

In Python 3

>>> x = input("something:")
something:10
>>> x
'10'

>>> x = input("something:")
something:'10' #entered data treated as string with or without ''
>>> x
"'10'"

>>> x = raw_input("something:") # will result NameError
Traceback (most recent call last):
   File "<pyshell#3>", line 1, in 
  <module>
   x = raw_input("something:")
NameError: name 'raw_input' is not defined

4. Phép chia số nguyên :

Trong Python 2, kết quả của phép chia hai số nguyên được làm tròn thành số nguyên gần nhất. Kết quả là, 3/2 sẽ hiển thị 1. Để có được phép chia dấu phẩy động, tử số hoặc mẫu số phải được sử dụng rõ ràng như float. Do đó, 3.0 / 2 hoặc 3 / 2.0 hoặc 3.0 / 2.0 sẽ dẫn đến 1.5
Python 3 đánh giá 3/2 là 1.5 theo mặc định, điều này trực quan hơn cho các lập trình viên mới.

5. Biểu diễn Unicode :

Python 2 yêu cầu bạn đánh dấu một chuỗi bằng chữ u nếu bạn muốn lưu trữ nó dưới dạng Unicode.
Python 3 lưu trữ các chuỗi dưới dạng Unicode, theo mặc định. Chúng ta có chuỗi Unicode (utf-8) và 2 lớp byte: mảng byte và mảng byte.

6. xrange () Hàm removed:

Trong Python 2, range () trả về một danh sách và xrange () trả về một đối tượng sẽ chỉ tạo các mục trong phạm vi khi cần, tiết kiệm bộ nhớ.
Trong Python 3, hàm range () được loại bỏ và xrange () đã được đổi tên thành range (). Ngoài ra,  range () hỗ trợ cắt trong Python 3.2 trở lên.

7. raise exception:

Python 2 chấp nhận cả hai ký hiệu, cú pháp 'cũ' và 'mới'; Python 3 xảylỗi SyntaxError nếu chúng ta không đặt đối số ngoại lệ trong dấu ngoặc đơn.
raise IOError, "file error" #This is accepted in Python 2
raise IOError("file error") #This is also accepted in Python 2
raise IOError, "file error" #syntax error is raised in Python 3
raise IOError("file error") #this is the recommended syntax in Python 3

8. Arguments in Exceptions:

Trong Python 3, các đối số cho ngoại lệ phải được khai báo bằng từ khóa 'as'.
except Myerror, err: # In Python2
except Myerror as err: #In Python 3

9. Hàm next() và phương thức .next()

Trong Python 2 ,  next () như một phương thức của đối tượng trình tạo. Hàm next (), để lặp qua đối tượng trình tạo, cũng được chấp nhận. 
gen = (letter for letter in 'Hello World') # creates generator object
next(my_generator) #allowed in Python 2 and Python 3
my_generator.next() #allowed in Python 2. raises AttributeError in Python 3

10. 2to3 Utility :

Cùng với Python 3, tập lệnh 2to3.py thường được cài đặt trong thư mục công cụ / tập lệnh. Nó đọc mã nguồn Python 2.x và áp dụng một loạt trình sửa lỗi để biến nó thành mã Python 3.x hợp lệ.
Here is a sample Python 2 code (area.py):

def area(x,y = 3.14): 
   a = y*x*x
   print a
   return a

a = area(10)
print "area",a

To convert into Python 3 version:

$2to3 -w area.py

Converted code :

def area(x,y = 3.14): # formal parameters
   a = y*x*x
   print (a)
   return a

a = area(10)
print("area",a)
Bài tiếp theo: Python3 - Tổng quan >>
vncoder logo

Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!