Ngày phát hành Python 3. 10 sắp tới, dự tính là tháng 05 năm 2021. Vì vậy đã đến lúc sử dụng phiên bản của ngôn ngữ lập trình Python mới và xem những tính năng mới tuyệt vời nào sẽ đi kèm với bản phát hành mới này
Nội dung
Cài đặt phiên bản Python 3. 10 Anpha
Để thử các tính năng mới này, chúng tôi phải cài đặt phiên bản Alpha / Beta của Python 3. 10. Hãy nhớ rằng phiên bản cuối cùng này vẫn chưa ổn định
- Nếu bạn đang sử dụng Linux [Ubuntu], bạn cần làm theo các bước dưới đây
# Download the latest version for Linux
wget //www.python.org/ftp/python/3.10.0/Python-3.10.0a6.tgz
# Unpack Python source code
tar xzvf Python-3.10.0a6.tgz
cd Python-3.10.0a6
# Compile Python source with static libraries
./configure --prefix=$HOME/python-3.10.0a6
make
make install
$HOME/python-3.10.0a6/bin/python3.10
- Nếu bạn đang sử dụng Windows, bạn chỉ cần tải xuống Trình cài đặt thực thi Python tại đây, sau đó bạn cần chạy Run Executable Installer
- Nếu bạn đang sử dụng MacO, liên kết này có thể giúp bạn
Trăn 3. 10 last đã được cài đặt , bây giờ chúng ta có thể xem qua tất cả các tính năng mới. Please started
New features of Python 3. 10
Phiên bản mới của python có nhiều tính năng mới. Bài viết này chỉ đưa ra một số tính năng quan trọng nhất trong số đó
Union kiểu toán tử
Phiên bản cũ
from typing import Union
def square[number: Union[int, float]] -> Union[int, float]:
return number ** 2
isinstance['3', int | str]
Phiên bản mới
def square[number: int | float] -> int | float:
return number ** 2
isinstance['3', int | str]
Tính năng này được đóng góp bởi Ken Jin. Truy cập liên kết này [PEP 612] để biết thêm chi tiết
TypeAlias Annotation
Khái niệm chú thích [Annotation] TypeAlias lần đầu tiên được giới thiệu trong PEP 484 [Phiên bản Python 3. 5]. Việc hoàn thiện khôi phục lại khái niệm này sẽ được trình bày trong PEP 613 [Phiên bản Python. 3. 10]. Lý do chính để thực hiện lại đây là khái niệm cũ rất khó cho người kiểm tra kiểu phân biệt giữa bí danh kiểu [kiểu bí danh] và cho phép gán thông thường. Xem ví dụ sau
Phiên bản cũ
StrCache = 'Cache[str]' # a type alias
LOG_PREFIX = 'LOG[DEBUG]' # a module constant
Phiên bản mới
StrCache: TypeAlias = 'Cache[str]' # a type alias
LOG_PREFIX = 'LOG[DEBUG]' # a module constant
Tính năng này được đóng góp bởi Mikhail Golubev. Truy cập liên kết này [PEP 613] để biết thêm chi tiết
Thông báo lỗi tốt hơn trong cú pháp phân tích cú pháp
Giả sử bạn viết từ điển [hoặc bộ, danh sách hoặc bộ] và bạn quên đóng dấu trích dẫn [hoặc dấu trích đơn]. Nếu bạn đang làm việc với python 3, khi bạn thực thi mã và trình dịch sẽ hiển thị lỗi cú pháp như lỗi “SyntaxError. EOF bất ngờ”.
Tuy nhiên, với phiên bản Python 3 mới. 10 này, khi bạn cố gắng phân tích cú pháp cú pháp mã có chứa dấu trích lệnh hoặc dấu trích dẫn, thông tin dịch vụ sẽ hiển thị nhiều thông tin lỗi hơn so với vị trí của dấu trích dẫn đơn hoặc dấu trích dẫn.
Phiên bản cũ
File "example.py", line 3
some_other_code = foo[]
^
SyntaxError: invalid syntax
Phiên bản mới
File "example.py", line 1
expected = {9: 1, 18: 2, 19: 2, 27: 3, 28: 3, 29: 3, 36: 4, 37: 4,
^
SyntaxError: '{' was never closed
Tính năng này được đóng góp bởi Pablo Galindo và Batuhan Taskaya
Đối sánh mô hình cấu trúc [Structural Pattern Matching]
Có thể nói rằng tính năng này là quan trọng nhất được giới thiệu trong Python 3. 10
So sánh mẫu [Pattern matching] sẽ được trình bày dưới dạng chung. câu lệnh so khớp và câu lệnh trường hợp [match statement & case Statements] của các mẫu với các liên kết hành động. Các mẫu có thể là. string, ánh xạ, kiểu dữ liệu nguyên thủy cũng như các thể hiện của lớp. Ví dụ. Bằng cách sử dụng mẫu đối chiếu, chúng tôi có thể trích xuất thông tin từ các loại dữ liệu phức tạp, đưa vào cấu trúc dữ liệu và áp dụng các công cụ hành động có thể dựa trên các biểu mẫu dữ liệu khác nhau. Đây không chỉ là cú pháp switch / case mà chúng ta đều biết từ các ngôn ngữ lập trình khác nhau, mà nó còn bổ sung thêm chức năng mạnh mẽ khác
Ví dụ 1. Đơn giản mẫu – khớp với một chữ
ef func[x]:
match x:
case "x1":
return "x1 .."
case "x2":
return "x2"
case "x3" | "x4": # Multiple literals can be combined with `|`
return "Yay, "
case _:
return "Just another x..."
Ví dụ 2. Các mẫu có chữ và biến
________số 8Ví dụ 3. Các mẫu và lớp
class Point:
x: int
y: int
def location[point]:
match point:
case Point[x=0, y=0]:
print["Origin is the point's location."]
case Point[x=0, y=y]:
print[f"Y={y} and the point is on the y-axis."]
case Point[x=x, y=0]:
print[f"X={x} and the point is on the x-axis."]
case Point[]:
print["The point is located somewhere else on the plane."]
case _:
print["Not a point"]
Ví dụ 4. Guard [bảo vệ]
Chúng ta có thể thêm mệnh đề nếu vào một mẫu, được gọi là Vệ binh. Nếu lệnh bảo vệ là sai, trận đấu sẽ tiếp tục để thử khối tiếp theo. Lưu ý rằng việc thu thập giá trị diễn ra trước khi đánh giá bảo vệ
from typing import Union
def square[number: Union[int, float]] -> Union[int, float]:
return number ** 2
isinstance['3', int | str]
0Ví dụ 5. Các mẫu lồng nhau
Các mẫu có thể được lồng vào nhau theo những cách tùy ý. Ví dụ. nếu dữ liệu của chúng tôi là một danh sách ngắn các điểm, chúng tôi có thể được đối chiếu theo cách sau
from typing import Union
def square[number: Union[int, float]] -> Union[int, float]:
return number ** 2
isinstance['3', int | str]
1Nếu bạn muốn xem thêm các ví dụ và hướng dẫn đầy đủ, hãy xem PEP 636
Hiệu quả cải thiện
Giống như các bản phát hành gần đây của Python, Python 3. 10 cũng mang lại một số cải tiến về hiệu suất. Trước hết là tối ưu hóa các hàm tạo str [], byte [] và bytearray [], sẽ nhanh hơn khoảng 30% [đoạn mã được điều chỉnh từ ví dụ về trình theo dõi lỗi Python]
from typing import Union
def square[number: Union[int, float]] -> Union[int, float]:
return number ** 2
isinstance['3', int | str]
2Một tối ưu hóa đáng chú ý khác [nếu bạn đang sử dụng chú thích loại] là các hàm tham số và chú thích của chúng không còn được tính toán trong thời gian chạy nữa mà thay vào đó là thời điểm biên dịch. Điều này hiện giúp tạo một hàm có chú thích tham số nhanh hơn khoảng 2 lần
Trên hết, có một số tối ưu hóa hơn trong các phần khác nhau của lõi Python. Bạn có thể tìm thấy chi tiết cụ thể về những vấn đề đó trong các sự cố sau trong quá trình theo dõi lỗi Python. bpo-41718, bpo-42927 và bpo-43452
Kết luận
Trăn 3. 10 mang đến nhiều tính năng thú vị mới, nhưng vì nó là phiên bản alpha [chưa ổn định] nên vẫn còn lâu mới được thử nghiệm đầy đủ và sẵn sàng đưa vào sử dụng. Vì vậy, không được khuyến khích bắt đầu sử dụng ngay nhưng bạn có thể khám phá các tính năng mới của phiên bản này