Một ngôn ngữ được coi là ngôn ngữ được nhập động nếu loại biến của ngôn ngữ đó được kiểm tra trong thời gian chạy của quá trình biên dịch mã hoặc diễn giải mã. Trong các loại ngôn ngữ lập trình như vậy, chúng ta không cần khởi tạo một biến với kiểu của nó. Chúng ta có thể khai báo một biến bằng cách viết tên ở bên trái và giá trị ở bên trái của tên biến, Ex Var = 90. Một số ngôn ngữ gõ động là
Vì việc cấp phát bộ nhớ và kiểm tra biến được thực hiện trong thời gian chạy mã, nên các loại ngôn ngữ này không được coi là kém tối ưu hơn so với ngôn ngữ được nhập tĩnh
Chương trình Giáo dục Kỹ thuật [EngEd] này được hỗ trợ bởi Mục. Triển khai tức thì các container trên nhiều nhà cung cấp đám mây trên toàn cầu
Dùng thử miễn phí
Nhập tĩnh trong Python8 Tháng Ba, 2021
- chủ đề
- ngôn ngữ
Python là một ngôn ngữ được gõ động. Người ta không cần phải chỉ ra rõ ràng kiểu dữ liệu và kiểu trả về của các biến và hàm của bạn, tương ứng. Dynamic typing làm cho Python rất thân thiện với người dùng. Tuy nhiên, gõ động không có tài liệu xác minh trình biên dịch và có thể dẫn đến lỗi thời gian chạy khó sửa. Gõ tĩnh cung cấp một giải pháp cho những vấn đề này
Trong bài viết này sẽ giới thiệu cách thực hiện gõ tĩnh trong Python và xử lý cả chú thích biến và hàm. Bạn sẽ cần có hiểu biết cơ bản về Python để theo dõi. Bạn cũng sẽ cần cài đặt mypy để kiểm tra loại
Mục lục
- Giới thiệu về loại chú thích
- Chú thích biến
- Chú thích chức năng
- Các chú thích được chọn trong mô-đun
7 của PythonOutput 1: John Doe
- Có thể gọi
- Danh sách
- Dict & Bất kỳ
- liên hiệp
- Sử dụng trình kiểm tra kiểu tĩnh mypy
1. Giới thiệu về loại chú thích
Chú thích loại là một tính năng mới được PEP 484 thêm vào Python phiên bản 3. 5 trở lên. Chúng đưa ra các gợi ý cho trình đọc mã về kiểu trả về của biến hoặc hàm. Chú thích loại cũng có thể được thực hiện trên các biến và hàm
2. Chú thích biến
Chúng tôi đạt được chú thích biến bằng cách thêm dấu chấm phẩy và loại sau khi khai báo hoặc khởi tạo một biến. Tôi. e
Output 1: John Doe
8. Giống như trong ví dụ bên dưới, thay vì nói Output 1: John Doe
9, chúng tôi chỉ định loại trả về bằng cách viết def square[x: int] -> int:
return x * x
print[square[6]]
0. Người ta có thể tìm thấy đầu ra của mã nàyname: str = "John Doe"
print["Output 1: "+ str[name]]
Đầu ra có thể được tìm thấy
Output 1: John Doe
Bạn sẽ nhận thấy rằng đầu ra giống như
Output 1: John Doe
9. Tuy nhiên, chúng ta sẽ tìm hiểu lý do tại sao cái sau được khuyến nghị3. Chú thích chức năng
Điều này đạt được bằng cách thêm một mũi tên chuyển tiếp biểu thị kiểu trả về dự kiến của tham số hàm sau dấu ngoặc đóng của tham số hàm. Tôi. e
def square[x: int] -> int:
return x * x
print[square[6]]
2def square[x: int] -> int:
return x * x
print[square[6]]
Đầu ra có thể được tìm thấy là Đầu ra. 2
36
4. Các chú thích được chọn trong mô-đun 'Đánh máy' của Python
Ở đây chúng ta sẽ xem xét một số chú thích được sử dụng phổ biến nhất trong mô-đun Python Typing
4. 1. Có thể gọi
Chúng tôi sử dụng Callable khi một chức năng là đối số của một chức năng khác. Đoạn mã dưới đây trình bày cách sử dụng
def square[x: int] -> int:
return x * x
print[square[6]]
3, chúng tôi đang viết một hàm để gọi hàm def square[x: int] -> int:
return x * x
print[square[6]]
4 cho mọi thành viên của danh sáchfrom typing import Callable, List
# The square integers
def square[x: int] -> int:
return x*x
# implementing callable. square[] function passed as an argument
def square_list_members[get_square: Callable, list: List] -> List[int]:
return [get_square[num] for num in list]
# print output
print[square_list_members[square, range[10,20]]]
đầu ra
[100, 121, 144, 169, 196, 225, 256, 289, 324, 361]
Bạn có thể xác nhận đầu ra là đầu ra 3
4. 2. Danh sách
def square[x: int] -> int:
return x * x
print[square[6]]
5 thông báo cho trình kiểm tra loại rằng các số là một danh sách nếu các số nguyên. def square[x: int] -> int:
return x * x
print[square[6]]
6 chỉ ra rằng hàm trả về một danh sách các số nguyênĐầu ra mã là một danh sách các số chẵn từ 100 đến 120. là đầu ra là
def square[x: int] -> int:
return x * x
print[square[6]]
7# List as a varible
numbers: List[int] = []
# List as a return type of a function
from typing import List
def even_numbers[numbers: List[int]] -> List[int]:
# list compression
numbers = [number for number in numbers if number % 2 == 0]
# return even numbers in the list arguments
return numbers
print[even_numbers[range[100, 150]]]
[100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120]
4. 3. Dict & bất kỳ
from typing import Callable, Dict, Any
# The square integers
def square[x: int] -> int:
return x*x
# implementing Dict, the key can be of any type
def square_dictionary_values[get_square: Callable, dictionary: Dict[Any, int]] -> Dict[Any, int]:
return {key: get_square[value] for key, value in dictionary.items[]}
# print output
print[square_dictionary_values[square, {'one':1, 'two': 2, 'three':3, 'four': 4, 'five': 5}]]
Bạn có thể tìm thấy đầu ra là
def square[x: int] -> int:
return x * x
print[square[6]]
8{'one': 1, 'two': 4, 'three': 9, 'four': 16, 'five': 25}
Trình kiểm tra loại coi
def square[x: int] -> int:
return x * x
print[square[6]]
9 là tương thích với bất kỳ loại dữ liệu nào. Chúng tôi có thể thực hiện bất kỳ thao tác hoặc lệnh gọi phương thức nào trên def square[x: int] -> int:
return x * x
print[square[6]]
94. 4. liên hiệp
Union được sử dụng khi một hàm có nhiều hơn một kiểu trả về. Chẳng hạn, chúng ta có thể sử dụng
36
1 để sửa đổi hàm def square[x: int] -> int:
return x * x
print[square[6]]
4 của mình để tìm bình phương của cả 36
3 và 36
4Output 1: John Doe
0Sản lượng đầu ra là
36
5Output 1: John Doe
15. Sử dụng trình kiểm tra kiểu tĩnh mypy
Đây là nơi chúng ta sẽ hiểu sự liên quan của việc gõ tĩnh
Đầu tiên, chúng tôi cài đặt
36
6Output 1: John Doe
2Chúng tôi sẽ kiểm tra loại bằng cách sử dụng chức năng
def square[x: int] -> int:
return x * x
print[square[6]]
4 của chúng tôi. Khi chúng ta thay đổi giá trị trả về của hàm thành chuỗi 36
8Output 1: John Doe
3Chương trình xuất ra một chuỗi
36
8 mặc dù chúng tôi mong đợi số nguyên hoặc số float. Bạn sẽ nhận thấy rằng chương trình này đã chạy thành công mà không có lỗiHãy sử dụng
36
6 để nhập mã kiểm tra lỗi. Để kiểm tra một đoạn mã bằng mypy, hãy chạy from typing import Callable, List
# The square integers
def square[x: int] -> int:
return x*x
# implementing callable. square[] function passed as an argument
def square_list_members[get_square: Callable, list: List] -> List[int]:
return [get_square[num] for num in list]
# print output
print[square_list_members[square, range[10,20]]]
1 trong thư mục mã của bạnChạy mã và kiểm tra đầu ra trong thiết bị đầu cuối sau
đầu ra
Output 1: John Doe
4Khi chúng tôi sửa lỗi bằng cách xác định kiểu trả về hợp lệ của các biến và hàm,
36
6 đưa ra kết quả thành công cho thấy chương trình đã vượt qua kiểm tra kiểu thành công như được hiển thịOutput 1: John Doe
5đầu ra
Output 1: John Doe
6Như bạn có thể thấy, với kiểu gõ tĩnh, chúng ta có thể sử dụng trình kiểm tra kiểu để xác định lỗi trong mã của mình
5. Phần kết luận
Gõ gợi ý là một tính năng hữu ích trong Python. Nó giúp bạn xác định lỗi và duy trì một hồ sơ rõ ràng. Trong hướng dẫn này, bạn đã học những kiến thức cơ bản về cách sử dụng gợi ý loại và cách thêm chúng vào mã bằng cách sử dụng chú thích
Bạn cũng đã có phần giới thiệu về cách sử dụng mypy làm trình kiểm tra kiểu tĩnh. Bạn có thể tiếp tục và tìm hiểu sâu hơn về PEP 484 và tài liệu Mypy để biết thêm thông tin