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