Gợi ý loại python thực hành tốt nhất

Bản tóm tắt. trong hướng dẫn này, bạn sẽ tìm hiểu về các gợi ý về loại python và cách sử dụng công cụ mypy để kiểm tra các loại tĩnh

Giới thiệu về gợi ý kiểu Python

Một số ngôn ngữ lập trình có kiểu gõ tĩnh, chẳng hạn như C/C++. Điều đó có nghĩa là bạn cần khai báo trước các loại biến, tham số và giá trị trả về của hàm. Các loại được xác định trước cho phép trình biên dịch kiểm tra mã trước khi biên dịch và chạy chương trình

Python sử dụng kiểu gõ động, trong đó các biến, tham số và giá trị trả về của hàm có thể là bất kỳ kiểu nào. Ngoài ra, các loại biến có thể thay đổi trong khi chương trình chạy

Nói chung, gõ động giúp lập trình dễ dàng và gây ra các lỗi không mong muốn mà bạn chỉ có thể phát hiện ra cho đến khi chương trình chạy

Gợi ý kiểu Python cung cấp cho bạn kiểu gõ tĩnh tùy chọn để tận dụng tốt nhất cả kiểu gõ tĩnh và động

Ví dụ sau định nghĩa một hàm đơn giản chấp nhận một chuỗi và trả về một chuỗi khác

def say_hi(name): return f'Hi {name}' greeting = say_hi('John') print(greeting)

Code language: Python (python)

Đây là cú pháp để thêm gợi ý kiểu vào tham số và giá trị trả về của hàm

parameter: type -> type

Ví dụ: phần sau đây trình bày cách sử dụng gợi ý kiểu cho tham số

def say_hi(name: str) -> str: return f'Hi {name}' greeting = say_hi('John') print(greeting)

Code language: Python (python)
7 và giá trị trả về của hàm

def say_hi(name: str) -> str: return f'Hi {name}' greeting = say_hi('John') print(greeting)

Code language: Python (python)
8

def say_hi(name: str) -> str: return f'Hi {name}' greeting = say_hi('John') print(greeting)

Code language: Python (python)

đầu ra

Hi John

Code language: Python (python)

Trong cú pháp mới này, tham số

def say_hi(name: str) -> str: return f'Hi {name}' greeting = say_hi('John') print(greeting)

Code language: Python (python)
7 có kiểu

Hi John

Code language: Python (python)
0

________số 8

Và giá trị trả về của hàm

def say_hi(name: str) -> str: return f'Hi {name}' greeting = say_hi('John') print(greeting)

Code language: Python (python)
8 cũng có kiểu là

Hi John

Code language: Python (python)
0

parameter: type -> type

1

Bên cạnh loại

Hi John

Code language: Python (python)
0, bạn có thể sử dụng các loại tích hợp khác như

Hi John

Code language: Python (python)
4,

Hi John

Code language: Python (python)
5,

Hi John

Code language: Python (python)
6 và

Hi John

Code language: Python (python)
7 cho gợi ý loại

Điều quan trọng cần lưu ý là trình thông dịch Python hoàn toàn bỏ qua các gợi ý kiểu. Nếu bạn chuyển một số vào hàm

def say_hi(name: str) -> str: return f'Hi {name}' greeting = say_hi('John') print(greeting)

Code language: Python (python)
8, chương trình sẽ chạy mà không có bất kỳ cảnh báo hay lỗi nào

parameter: type -> type

8

đầu ra

parameter: type -> type

9

Để kiểm tra cú pháp gợi ý kiểu, bạn cần sử dụng công cụ kiểm tra kiểu tĩnh

Sử dụng công cụ kiểm tra kiểu tĩnh. mypy

Python không có công cụ kiểm tra kiểu tĩnh chính thức. Hiện tại, công cụ của bên thứ ba phổ biến nhất là Mypy. Vì Mypy là gói của bên thứ ba nên bạn cần cài đặt nó bằng lệnh

Hi John

Code language: Python (python)
9 sau

def say_hi(name: str) -> str: return f'Hi {name}' greeting = say_hi('John') print(greeting)

Code language: Python (python)
1

Sau khi cài đặt

name: str

Code language: Python (python)
0, bạn có thể sử dụng nó để kiểm tra loại trước khi chạy chương trình bằng cách sử dụng lệnh sau

def say_hi(name: str) -> str: return f'Hi {name}' greeting = say_hi('John') print(greeting)

Code language: Python (python)
3

Nó sẽ hiển thị thông báo sau

parameter: type -> type

0

Lỗi chỉ ra rằng đối số của

name: str

Code language: Python (python)
1 là

Hi John

Code language: Python (python)
4 trong khi loại dự kiến ​​là

Hi John

Code language: Python (python)
0

Nếu bạn đổi lại đối số thành chuỗi và chạy lại

name: str

Code language: Python (python)
0, nó sẽ hiển thị thông báo thành công

parameter: type -> type

1

Nhập gợi ý & nhập suy luận

Khi xác định một biến, bạn có thể thêm một gợi ý loại như thế này

parameter: type -> type

2

Loại của biến

def say_hi(name: str) -> str: return f'Hi {name}' greeting = say_hi('John') print(greeting)

Code language: Python (python)
7 là

Hi John

Code language: Python (python)
0. Nếu bạn gán một giá trị không phải là chuỗi cho biến

def say_hi(name: str) -> str: return f'Hi {name}' greeting = say_hi('John') print(greeting)

Code language: Python (python)
7, trình kiểm tra kiểu tĩnh sẽ báo lỗi. Ví dụ

parameter: type -> type

3

Lỗi

parameter: type -> type

4

Việc thêm một loại vào một biến là không cần thiết vì các trình kiểm tra loại tĩnh thường có thể suy ra loại dựa trên giá trị được gán cho biến

Trong ví dụ này, giá trị của tên là một chuỗi ký tự để trình kiểm tra kiểu tĩnh sẽ suy ra kiểu của biến tên là str. Ví dụ

parameter: type -> type

5

Nó sẽ đưa ra cùng một lỗi

parameter: type -> type

4

Thêm gợi ý loại cho nhiều loại

Hàm

name: str

Code language: Python (python)
8 sau đây trả về tổng của hai số

parameter: type -> type

7

Các số có thể là số nguyên hoặc số float. Để đặt gợi ý loại cho nhiều loại, bạn có thể sử dụng

name: str

Code language: Python (python)
9 từ mô-đun

parameter: type -> type

10

Đầu tiên, nhập

name: str

Code language: Python (python)
9 từ mô-đun

parameter: type -> type

10

parameter: type -> type

8

Thứ hai, sử dụng

name: str

Code language: Python (python)
9 để tạo một loại liên kết bao gồm

Hi John

Code language: Python (python)
4 và

Hi John

Code language: Python (python)
5

parameter: type -> type

9

Đây là mã nguồn hoàn chỉnh

def say_hi(name: str) -> str: return f'Hi {name}' greeting = say_hi('John') print(greeting)

Code language: Python (python)
0

Bắt đầu từ Python 3. 10, bạn có thể sử dụng X. Ví dụ cú pháp Y để tạo kiểu kết hợp

def say_hi(name: str) -> str: return f'Hi {name}' greeting = say_hi('John') print(greeting)

Code language: Python (python)
1

Nhập bí danh

Python cho phép bạn gán bí danh cho một loại và sử dụng bí danh cho các gợi ý về loại. Ví dụ

def say_hi(name: str) -> str: return f'Hi {name}' greeting = say_hi('John') print(greeting)

Code language: Python (python)
2

Trong ví dụ này, chúng tôi chỉ định loại

parameter: type -> type

16 một bí danh

parameter: type -> type

17 và sử dụng bí danh

parameter: type -> type

17 trong hàm add()

Thêm gợi ý loại cho danh sách, từ điển và bộ

Bạn có thể sử dụng các loại tích hợp sẵn sau đây để đặt gợi ý loại cho danh sách, từ điển và bộ

  • danh sách
  • mệnh lệnh
  • bộ

Nếu bạn nhập gợi ý một biến dưới dạng danh sách nhưng sau đó gán từ điển cho biến đó, bạn sẽ gặp lỗi

def say_hi(name: str) -> str: return f'Hi {name}' greeting = say_hi('John') print(greeting)

Code language: Python (python)
3

Lỗi

def say_hi(name: str) -> str: return f'Hi {name}' greeting = say_hi('John') print(greeting)

Code language: Python (python)
4

Để chỉ định các loại giá trị trong danh sách, từ điển và bộ, bạn có thể sử dụng bí danh loại từ mô-đun gõ

Nhập Bí danh Loại tích hợpListlistTupletupleDictdictSetsetFrozensetfrozensetSequenceĐối với danh sách, bộ dữ liệu và bất kỳ loại dữ liệu trình tự nào khác. Ánh xạĐối với từ điển (dict), set, freezeset và bất kỳ kiểu dữ liệu ánh xạ nào khácByteStringbytes, bytearray và memoryview

Ví dụ, sau đây định nghĩa một danh sách các số nguyên

def say_hi(name: str) -> str: return f'Hi {name}' greeting = say_hi('John') print(greeting)

Code language: Python (python)
5

không có loại

Nếu một hàm không trả về giá trị một cách rõ ràng, bạn có thể sử dụng Không để nhập gợi ý giá trị trả về. Ví dụ

Gợi ý loại Python hoạt động như thế nào?

Giới thiệu về gợi ý kiểu Python . Các loại được xác định trước cho phép trình biên dịch kiểm tra mã trước khi biên dịch và chạy chương trình. you need to declare types of variables, parameters, and return values of a function upfront. The predefined types allow the compilers to check the code before compiling and running the program.

Gợi ý kiểu có phải là một cách thực hành tốt trong Python không?

Gợi ý nhập giúp bạn xây dựng và duy trì kiến ​​trúc gọn gàng hơn . Hành động viết các gợi ý về loại buộc bạn phải suy nghĩ về các loại trong chương trình của mình. Mặc dù bản chất động của Python là một trong những tài sản tuyệt vời của nó, nhưng ý thức về việc dựa vào kiểu gõ vịt, phương thức quá tải hoặc nhiều loại trả về là một điều tốt.

Python có phải là Typesafe không?

Python là ngôn ngữ bán loại an toàn . Python là một ngôn ngữ được gõ động và mạnh mẽ, được tích hợp sẵn mức độ kiểm soát an toàn kiểu cao. Nhưng việc kiểm tra kiểu chỉ được thực hiện trong thời gian chạy. Vì vậy, chúng ta có thể nói rằng Python không phải là ngôn ngữ an toàn 100%.