Bạn có thể làm cho python được gõ mạnh khô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

  1. Giới thiệu về loại chú thích
  2. Chú thích biến
  3. Chú thích chức năng
  4. Các chú thích được chọn trong mô-đun Python
    Output 1: John Doe
    
    7
    • Có thể gọi
    • Danh sách
    • Dict & Bất kỳ
    • liên hiệp
  5. 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ày ở đây

name: str = "John Doe"
print["Output 1: "+ str[name]]

Đầu ra có thể được tìm thấy ở đây là Đầu ra 1

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]]
2

def square[x: int] -> int:
    return x * x
print[square[6]]

Đầu ra có thể được tìm thấy ở đây dưới dạng Đầ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ách

Output 1: John Doe
2

đầu ra

Output 1: John Doe
3

Bạn có thể xác nhận đầu ra ở đây 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. Đây là đầu ra là

def square[x: int] -> int:
    return x * x
print[square[6]]
7

Output 1: John Doe
7

Output 1: John Doe
8

4. 3. Dict & bất kỳ

Output 1: John Doe
9

Bạn có thể tìm thấy đầu ra ở đây là

def square[x: int] -> int:
    return x * x
print[square[6]]
8

Output 1: John Doe
1

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 mọi loại dữ liệu. Chúng tôi có thể thực hiện bất kỳ thao tác hoặc cuộc gọi phương thức nào trên
def square[x: int] -> int:
    return x * x
print[square[6]]
9

4. 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
4

Output 1: John Doe
0

Đầu ra ở đây là ________ 95

Output 1: John Doe
1

5. 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
6

Output 1: John Doe
2

Chúng tôi sẽ kiểm tra loại bằ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
8

Output 1: John Doe
3

Chươ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ỗi

Hãy sử dụng

36
6 để gõ mã kiểm tra lỗi. Để kiểm tra một đoạn mã bằng mypy, hãy chạy
Output 1: John Doe
21 trong thư mục chứa mã của bạn

Chạy mã và kiểm tra đầu ra trong thiết bị đầu cuối thay thế sau tại đây

đầu ra

Output 1: John Doe
4

Khi 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ị ở đây

Output 1: John Doe
5

đầu ra

Output 1: John Doe
6

Như 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. Sự 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

Tôi có thể làm cho Python được nhập tĩnh không?

Python sẽ luôn là ngôn ngữ được gõ động. Tuy nhiên, PEP 484 đã giới thiệu các gợi ý về loại, cho phép thực hiện kiểm tra loại tĩnh của mã Python . Không giống như cách các loại hoạt động trong hầu hết các ngôn ngữ được nhập tĩnh khác, bản thân các gợi ý nhập không khiến Python thực thi các loại.

Tại sao Python là ngôn ngữ gõ mạnh?

Python được gõ mạnh vì trình thông dịch theo dõi tất cả các loại biến . Nó cũng rất năng động vì nó hiếm khi sử dụng những gì nó biết để hạn chế sử dụng biến. Trong Python, trách nhiệm của chương trình là sử dụng các hàm dựng sẵn như isinstance[] và issubclass[] để kiểm tra các loại biến và cách sử dụng chính xác.

Python có được gõ theo chuỗi không?

Python được gõ mạnh . Mọi thay đổi về loại đều yêu cầu chuyển đổi loại rõ ràng [còn gọi là truyền].

Ngôn ngữ được gõ động có thể được gõ mạnh không?

Các ngôn ngữ được nhập động [trong đó quá trình kiểm tra kiểu diễn ra trong thời gian chạy] cũng có thể được nhập mạnh . Lưu ý rằng trong các ngôn ngữ được nhập động, các giá trị, thay vì các biến, có các loại.

Chủ Đề