Các tính năng mới của trăn

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ố 8

Ví 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]
0

Ví 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]
1

Nế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]
2

Mộ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

Chủ Đề