Mô-đun gõ Python 2

Một thẻ đã tồn tại với tên chi nhánh được cung cấp. Nhiều lệnh Git chấp nhận cả tên thẻ và tên nhánh, vì vậy việc tạo nhánh này có thể gây ra hành vi không mong muốn. Bạn có chắc chắn muốn tạo nhánh này không?

Trong bài học này, bạn sẽ tìm hiểu về loại nhận xét. Như bạn đã thấy, các chú thích đã được giới thiệu trong Python 3 và chúng chưa được nhập vào Python 2. Điều này có nghĩa là, nếu bạn đang viết mã cần hỗ trợ Python cũ, thì bạn không thể sử dụng chú thích

Thay vào đó, bạn có thể sử dụng loại bình luận. Đây là những nhận xét được định dạng đặc biệt có thể được sử dụng để thêm gợi ý loại tương thích với mã cũ hơn. Loại nhận xét sẽ không có sẵn trong từ điển __annotations__. Để thêm nhận xét loại vào một chức năng, bạn làm điều này

def func[arg]:
    # type:[str] -> str
    ...

Đối với các biến, hãy thêm nhận xét loại trên cùng một dòng

my_variable = 42 # type: int

Các nhận xét loại chỉ là nhận xét, vì vậy chúng có thể được sử dụng trong bất kỳ phiên bản Python nào. Hãy thử thêm nhận xét loại vào chức năng từ bài học trước

>>>

>>> import math

>>> def circumference[radius]:
..     # type: [float] -> float
..     return 2 * math.pi * radius
...
...
>>> circumference[4.5]
28.274333882308138
>>> circumference.__annotations__
{}

Chú thích loại phải bắt đầu bằng type: literal và nằm trên cùng một dòng với định nghĩa hàm hoặc dòng tiếp theo. Nếu bạn muốn chú thích một hàm có nhiều đối số, bạn viết từng loại cách nhau bằng dấu phẩy. Bạn cũng có thể viết mỗi đối số trên một dòng riêng biệt với chú thích riêng của nó

# headlines.py

def headline1[text, width=80, fill_char="-"]:
    # type: [str, int, str] -> str
    return f" {text.title[]} ".center[width, fill_char]

print[headline1["type comments work", width=40]]

def headline2[
    text,           # type: str
    width=80,       # type: int
    fill_char='-',  # type: str
]:                  # type: [...] -> str
    return f" {text.title[]} ".center[width, fill_char]

print[headline2["these type comments also work", width=70]]

pi = 3.142  # type: float

Chạy ví dụ thông qua Python và Mypy

$ mypy headlines.py
$ python3 headlines.py
---------- Type Comments Work ----------
------------------- These Type Comments Also Work -------------------

Nếu bạn có lỗi, chẳng hạn nếu bạn tình cờ gọi

my_variable = 42 # type: int
0 với
my_variable = 42 # type: int
1 là đối số đầu tiên ở dòng 7 và
my_variable = 42 # type: int
0 với
my_variable = 42 # type: int
1 ở dòng 16, thì Mypy sẽ cho bạn biết như sau

$ mypy headlines.py
headlines.py:7: error: Argument 1 to "headline1" has incompatible type "int"; expected "str"
headlines.py:16: error: Argument "width" to "headline2" has incompatible type "str"; expected "int"

Bạn có nên sử dụng chú thích hoặc nhập nhận xét khi thêm gợi ý loại vào mã của riêng mình không?

Chú thích cung cấp cú pháp rõ ràng hơn, giữ thông tin loại gần với mã của bạn hơn. Chúng cũng là cách viết gợi ý loại chính thức được đề xuất và sẽ được phát triển thêm cũng như duy trì đúng cách trong tương lai

Loại nhận xét dài dòng hơn và có thể xung đột với các loại nhận xét khác trong mã của bạn như chỉ thị kẻ nói dối. Tuy nhiên, chúng có thể được sử dụng trong các cơ sở mã không hỗ trợ chú thích

Mô-đun gõ Python là gì?

Được giới thiệu từ Python 3. 5, Mô-đun gõ của Python cố gắng cung cấp cách gợi ý các loại để giúp trình kiểm tra kiểu tĩnh và bộ lọc dự đoán chính xác lỗi .

Làm cách nào để cài đặt mô-đun gõ trong Python?

Nhấp vào tab Trình thông dịch Python trong tab dự án của bạn. Nhấp vào biểu tượng + nhỏ để thêm thư viện mới vào dự án. Bây giờ hãy nhập thư viện sẽ được cài đặt, trong ví dụ của bạn là "phần mở rộng gõ" không có dấu ngoặc kép và nhấp vào Cài đặt gói

Python 2 có gợi ý kiểu không?

Theo PyCharm " PyCharm hỗ trợ gợi ý nhập trong chú thích hàm và nhập nhận xét bằng cách sử dụng mô-đun nhập được xác định bởi PEP 484 . " Tham chiếu đến TYPE COMMENTS cho thấy rõ rằng nó nên được hỗ trợ.

Đang gõ một phần của thư viện chuẩn Python?

LƯU Ý. bằng Python 3. 5 trở lên, mô-đun gõ nằm trong stdlib và việc cài đặt gói này KHÔNG CÓ HIỆU QUẢ, vì stdlib có quyền ưu tiên cao hơn thư mục cài đặt.

Chủ Đề