Gợi ý loại là quá trình chú thích mã của bạn để các nhà phát triển khác đọc mã của bạn sẽ hiểu loại đối tượng được khai báo. Gợi ý loại đã chính thức được thêm vào với việc phát hành Python 3. 5. Hiện tại, Python không thực thi gợi ý kiểu khi viết chương trình, nhưng đây vẫn là một cách thực hành tốt để làm cho mã của bạn dễ đọc hơn
Trong hướng dẫn này, chúng ta sẽ xem qua một ví dụ về gợi ý kiểu với hướng dẫn về cách phát hiện lỗi gợi ý kiểu. Sau đó, chúng tôi sẽ trình bày cách sử dụng gợi ý kiểu khi khởi tạo biến, cách sử dụng gợi ý kiểu với các giá trị do người dùng tạo và sau đó là cách sử dụng nhiều kiểu hoặc tùy chọn
Hàm ví dụ gợi ý kiểu #
Đầu tiên, hãy bắt đầu với chức năng này. Hàm toán học này được thiết kế để lấy hai số nguyên và trả về tổng
Trong ví dụ này, cả hai giá trị được truyền vào hàm
Success: no issues found in 1 source file
1 của chúng ta — đối tượng tính tổng và giá trị trả về — đều được chỉ định là số nguyên, như được biểu thị bằngSuccess: no issues found in 1 source file
2 trong từng trường hợp. Các giá trị mặc định xuất hiện sau gợi ý kiểu cho các tham số chức năngVì trình thông dịch Python không thực thi gợi ý kiểu, nên các kiểu không mong muốn có thể được chuyển đến các hàm
Hãy xem xét điều gì sẽ xảy ra khi hai chuỗi được chuyển vào hàm
Success: no issues found in 1 source file
1Sử dụng chức năng như thế này sẽ không gây ra lỗi. Thay vào đó, vì toán tử cộng có giá trị đối với kiểu chuỗi, nên nó sẽ nối hai chuỗi được truyền cho nó. Sử dụng hàm
Success: no issues found in 1 source file
1 như thế này sẽ trả về chuỗiSuccess: no issues found in 1 source file
5Nếu bạn muốn nhập kiểm tra mã của mình, bạn có thể sử dụng một công cụ bên ngoài để làm như vậy, chẳng hạn như Mypy. Bạn có thể sử dụng pip để cài đặt Mypy trong môi trường lập trình Python 3 của mình (hoặc sử dụng luân phiên lệnh
Success: no issues found in 1 source file
6)Đặt mã đã viết trước đó vào một tệp có tên là
Success: no issues found in 1 source file
7. Bạn có thể chạy Mypy trên tệp bằng cách gõ lệnh sauChạy Mypy trên mã sẽ trả về các lỗi sau
sum.py:4: error: Argument 1 to "sum_two_numbers" has incompatible type "str"; expected "int" sum.py:4: error: Argument 2 to "sum_two_numbers" has incompatible type "str"; expected "int" Found 2 errors in 1 file (checked 1 source file)
Mã được viết với các vấn đề về gợi ý kiểu sẽ không trả về bất kỳ lỗi nào. Nếu chúng ta đặt phiên bản đầu tiên của hàm
Success: no issues found in 1 source file
1 sử dụng các kiểu số nguyên, thay vào đó, chúng ta sẽ nhận được đầu ra sau từ MypySuccess: no issues found in 1 source file
Chạy Mypy trên các tệp Python sẽ giúp bạn phát hiện lỗi kiểm tra kiểu
Khởi tạo biến với kiểu hinting#
Các kiểu nguyên thủy của Python được bao gồm trong gợi ý kiểu chung
Mỗi biến này được khởi tạo với gợi ý kiểu như một phần của khai báo ở trên
Các loại bộ sưu tập#
Tùy thuộc vào phiên bản Python bạn đang sử dụng, bạn có thể tận dụng tính năng nhập tích hợp trên các cấu trúc dữ liệu hoặc bạn có thể cần nhập một mô-đun. Trong phần này, chúng ta sẽ tìm hiểu cách gợi ý các loại tập hợp kiểu trong hai phiên bản Python mới nhất
Trăn 3. 9#
Trong Python 3. 9, các loại bộ sưu tập tích hợp được bao gồm dưới dạng các loại chung và gợi ý loại tương ứng của chúng có thể được sử dụng tương tự như các loại Python nguyên thủy. Đây là cách bạn gõ gợi ý một đối tượng danh sách trong Python 3. 9
Danh sách này được khởi tạo với kiểu số nguyên bằng cách sử dụng cú pháp
Success: no issues found in 1 source file
0Dưới đây là một ví dụ về một bộ mà chúng tôi đã nhập gợi ý là bao gồm một số nguyên, số float và chuỗi
Đối với một đối tượng bộ dữ liệu có kích thước không xác định, dấu chấm lửng được sử dụng để mô tả loại đối tượng được lưu trữ bên trong nó. Đây là một bộ dữ liệu với số lượng số nguyên không xác định được lưu trữ
Có thể gộp nhiều loại lại với nhau. Đây là một bộ có bộ hai số nguyên
Bởi vì chúng tôi đang làm việc trong Python 3. 9 trong các ví dụ này, chúng ta có thể thiết lập các cấu trúc dữ liệu này như đã làm với các kiểu dữ liệu khác ở trên, sử dụng chức năng tích hợp sẵn
Trăn 3. số 8#
Trong Python 3. 8, gợi ý loại bộ sưu tập tích hợp không được tích hợp trực tiếp vào Python và phải được nhập để sử dụng. Các loại này có thể được nhập bằng cách sử dụng mô-đun gõ. Sử dụng mô-đun đó, bên dưới là cách bạn nhập gợi ý một đối tượng danh sách trong Python 3. 8. Lưu ý việc sử dụng trường hợp tiêu đề trong
Success: no issues found in 1 source file
1Một số kiểu khác trong Python 3. 8 cần tận dụng thư viện đánh máy bao gồm set, dictionary (_______12) và tuple. Vì cả hai loại từ điển và bộ có thể có nhiều loại liên quan, bạn phải chỉ định từng loại. Dưới đây là một ví dụ về bộ dữ liệu có số nguyên, số float và chuỗi
Đối với một đối tượng bộ dữ liệu có kích thước không xác định, dấu chấm lửng được sử dụng để mô tả loại đối tượng được lưu trữ bên trong nó. Đây là một bộ dữ liệu với số lượng số nguyên không xác định được lưu trữ
Bạn cũng có thể xếp nhiều loại lại với nhau, như trong bộ này sử dụng hai số nguyên
Khi làm việc với Python 3. 8, đảm bảo nhập mô-đun nhập liệu trước khi nhập gợi ý về bộ sưu tập dữ liệu. Trăn 3. 9 tương thích ngược và sẽ chạy mã ở trên
Loại do người dùng tạo#
Nó cũng hợp lệ để gõ gợi ý các lớp do người dùng định nghĩa. Về gợi ý kiểu, các lớp do người dùng định nghĩa hoạt động giống như các kiểu Python nguyên thủy. Ví dụ, đây là định nghĩa và triển khai lớp tọa độ
Trong ví dụ trên, các lớp do người dùng định nghĩa sử dụng gợi ý kiểu. Để tìm hiểu thêm về chú thích
Success: no issues found in 1 source file
3 vớiSuccess: no issues found in 1 source file
4, hãy xem lại PEP 484 - Gợi ý loạiNhiều loại và tùy chọn#
Như có thể xảy ra với một ứng dụng lấy đầu vào của người dùng, đôi khi bạn có thể thích một đối tượng là một trong nhiều loại. Điều này có thể sử dụng một công đoàn
Dưới đây là một ví dụ về cách bạn sẽ làm cho hàm
Success: no issues found in 1 source file
1 hỗ trợ cả số nguyên và số thựcTrong ví dụ trên,
Success: no issues found in 1 source file
6 vàSuccess: no issues found in 1 source file
7 có thể là kiểu số nguyên hoặc kiểu floatNếu không rõ đối tượng sẽ thuộc loại nào, bạn có thể sử dụng từ khóa
Success: no issues found in 1 source file
8 để mô tả nóTrong ví dụ trên,
Success: no issues found in 1 source file
9 có thể là bất kỳ loại nàoMột số đối tượng có thể có giá trị
Success: no issues found in 1 source file
10. Để cho phép điều này, hãy nhập gợi ý bằng từ khóaSuccess: no issues found in 1 source file
11 để chỉ định rằng một biến có thể có giá trị được xác định hoặc Không cóMã này sẽ tạo một đối tượng chuỗi có giá trị là
Success: no issues found in 1 source file
10Tài nguyên bổ sung#
Đọc thêm về gợi ý loại Python trong PEP 484 từ tài liệu Python chính thức
Tìm kiếm mã nguồn mở cho gợi ý kiểu trong Python với Sourcegraph để tìm hiểu cách những người khác đang sử dụng điều này trong mã của họ. Dưới đây là một vài truy vấn để giúp bạn bắt đầu