Hướng dẫn if type checking python - nếu gõ kiểm tra python

Trong bài học này, bạn sẽ khám phá cách sử dụng MyPy để kiểm tra loại trên mã Python của bạn. MyPy là công cụ phổ biến nhất để kiểm tra loại:Mypy to do type checking on your Python code. Mypy is the most common tool for doing type checking:Mypy to do type checking on your Python code. Mypy is the most common tool for doing type checking:

Nội dung chính

  • Type và tầm quan trọng của nó?
  • Type là gì?
  • Type quan trọng như thế nào?
  • Statically typed language và Dynamically typed language
  • Statically typed language
  • Dynamically typed language
  • Static Type-checking
  • Lợi ích của Static Type-checking
  • Điểm hạn chế của Static Type-checking
  • Non-exception Failures & Types for Tooling
  • Nó không thể kiểm soát hay báo lỗi của data type trong quá trình runtime, ví dụ khi fetch data từ một API bên ngoài vào. Cái này sẽ liên quan đến phần Runtime Type Checking mình sẽ nói rõ ở những bài viết sau nhé.Runtime Type Checking mình sẽ nói rõ ở những bài viết sau nhé.

MyPy là một trình kiểm tra loại tĩnh tùy chọn cho Python nhằm kết hợp các lợi ích của việc gõ và gõ tĩnh và gõ tĩnh. (Nguồn)

Mypy đã được bắt đầu bởi Jukka Lehtosalo trong quá trình tiến sĩ của mình. Các nghiên cứu tại Cambridge vào khoảng năm 2012. Ban đầu, MyPy bắt đầu như một biến thể độc lập của Python với sự động lực và gõ tĩnh liền mạch. Xem các slide Jukka từ Pycon Phần Lan 2012 để biết ví dụ về tầm nhìn ban đầu của Mypy.

Theo đề xuất của Guido Van Rossum, Mypy đã được viết lại để sử dụng các chú thích thay thế, làm cho nó trở thành một trình kiểm tra loại tĩnh cho mã Python thông thường.

Nếu bạn không có MyPy trên hệ thống của mình, bạn có thể cài đặt nó bằng PIP:

Đặt mã sau vào một tệp có tên headlines.py:

# headlines.py

def headline(text: str, align: bool = True) -> str:
    if align:
        return f"{text.title()}\n{'-' * len(text)}"
    else:
        return f" {text.title()} ".center(50, "o")

print(headline("python type checking"))
print(headline("use mypy", align="center"))

Đây thực chất là cùng một mã bạn đã thấy trước đó: định nghĩa của headline() và hai ví dụ đang sử dụng nó.

Bây giờ hãy chạy MyPy trên mã này:

$ mypy headlines.py
headlines.py:10: error: Argument "align" to "headline" has incompatible
                        type "str"; expected "bool"

Dựa trên các gợi ý loại, MyPy có thể nói với bạn rằng bạn đang sử dụng sai loại trên dòng 10. Để khắc phục sự cố trong mã, bạn nên thay đổi giá trị của đối số align mà bạn đang truyền. Bạn cũng có thể đổi tên căn chỉnh cờ với một cái gì đó ít khó hiểu hơn:

# headlines.py

def headline(text: str, centered: bool = False):
    if not centered:
        return f"{text.title()}\n{'-' * len(text)}"
    else:
        return f" {text.title()} ".center(50, "o")

print(headline("python type checking"))
print(headline("use mypy", centered=True))

Ở đây bạn đã thay đổi align thành trung tâm và sử dụng chính xác giá trị boolean cho centered khi gọi headline(). Mã hiện vượt qua MyPy:

Không có đầu ra từ MyPy có nghĩa là không phát hiện lỗi loại. Hơn nữa, khi bạn chạy mã, bạn sẽ thấy đầu ra dự kiến:

$ python headlines.py
Python Type Checking
--------------------
oooooooooooooooooooo Use Mypy oooooooooooooooooooo

Tiêu đề đầu tiên được căn chỉnh bên trái, trong khi cái thứ hai được tập trung.

Chào các bạn trở lại với series học 15 phút mỗi ngày cùng yeulaptrinh.vn, ở bài học này, chúng ta sẽ học về Type trong các ngôn ngữ lập trình, giải thích cho các bạn mới tiếp cận với data type, cũng như static type checking trong TypeScript . Chúng ta cùng bắt đầu nhé.học 15 phút mỗi ngày cùng yeulaptrinh.vn, ở bài học này, chúng ta sẽ học về Type trong các ngôn ngữ lập trình, giải thích cho các bạn mới tiếp cận với data type, cũng như static type checking trong TypeScript . Chúng ta cùng bắt đầu nhé.học 15 phút mỗi ngày cùng yeulaptrinh.vn, ở bài học này, chúng ta sẽ học về Type trong các ngôn ngữ lập trình, giải thích cho các bạn mới tiếp cận với data type, cũng như static type checking trong TypeScript . Chúng ta cùng bắt đầu nhé.học 15 phút mỗi ngày cùng yeulaptrinh.vn, ở bài học này, chúng ta sẽ học về Type trong các ngôn ngữ lập trình, giải thích cho các bạn mới tiếp cận với data type, cũng như static type checking trong TypeScript . Chúng ta cùng bắt đầu nhé.

Nội dung chính

  • Type và tầm quan trọng của nó?
  • Type là gì?
  • Type quan trọng như thế nào?
  • Statically typed language và Dynamically typed language
  • Statically typed language
  • Dynamically typed language
  • Static Type-checking
  • Lợi ích của Static Type-checking
  • Điểm hạn chế của Static Type-checking
  • Non-exception Failures & Types for Tooling

Nội dung chính

  • Type và tầm quan trọng của nó?
  • Type là gì?
  • Type quan trọng như thế nào?
  • Statically typed language và Dynamically typed language
  • Statically typed language
  • Dynamically typed language
  • Static Type-checking
  • Lợi ích của Static Type-checking
  • Điểm hạn chế của Static Type-checking
  • Non-exception Failures & Types for Tooling

Nó không thể kiểm soát hay báo lỗi của data type trong quá trình runtime, ví dụ khi fetch data từ một API bên ngoài vào. Cái này sẽ liên quan đến phần Runtime Type Checking mình sẽ nói rõ ở những bài viết sau nhé.Runtime Type Checking mình sẽ nói rõ ở những bài viết sau nhé.

  • MyPy là một trình kiểm tra loại tĩnh tùy chọn cho Python nhằm kết hợp các lợi ích của việc gõ và gõ tĩnh và gõ tĩnh. (Nguồn) Type và tầm quan trọng của nó?
    • Mypy đã được bắt đầu bởi Jukka Lehtosalo trong quá trình tiến sĩ của mình. Các nghiên cứu tại Cambridge vào khoảng năm 2012. Ban đầu, MyPy bắt đầu như một biến thể độc lập của Python với sự động lực và gõ tĩnh liền mạch. Xem các slide Jukka từ Pycon Phần Lan 2012 để biết ví dụ về tầm nhìn ban đầu của Mypy. Type là gì?
    • Theo đề xuất của Guido Van Rossum, Mypy đã được viết lại để sử dụng các chú thích thay thế, làm cho nó trở thành một trình kiểm tra loại tĩnh cho mã Python thông thường. Type quan trọng như thế nào?
  • Nếu bạn không có MyPy trên hệ thống của mình, bạn có thể cài đặt nó bằng PIP: Statically typed language và Dynamically typed language
    • Đặt mã sau vào một tệp có tên headlines.py: Statically typed language
    • Đây thực chất là cùng một mã bạn đã thấy trước đó: định nghĩa của headline() và hai ví dụ đang sử dụng nó. Dynamically typed language
  • Bây giờ hãy chạy MyPy trên mã này: Static Type-checking
    • Dựa trên các gợi ý loại, MyPy có thể nói với bạn rằng bạn đang sử dụng sai loại trên dòng 10. Để khắc phục sự cố trong mã, bạn nên thay đổi giá trị của đối số align mà bạn đang truyền. Bạn cũng có thể đổi tên căn chỉnh cờ với một cái gì đó ít khó hiểu hơn: Lợi ích của Static Type-checking
    • Ở đây bạn đã thay đổi align thành trung tâm và sử dụng chính xác giá trị boolean cho centered khi gọi headline(). Mã hiện vượt qua MyPy: Điểm hạn chế của Static Type-checking
    • Khai báo interface Human có thuộc tính city với hai giá trị mặc định là Hanoi và HCMCKhi khai admin type là Human, thuộc tính city sẽ được suggest các giá trị phù hợp, tránh việc nhập saiKhi khai admin type là Human, thuộc tính city sẽ được suggest các giá trị phù hợp, tránh việc nhập sai Non-exception Failures & Types for Tooling Non-exception Failures & Types for Tooling
  • Summary Summary Summary

Type và tầm quan trọng của nó?

Type là gì?

Type quan trọng như thế nào?string là kiểu dữ liệu để phân loại văn bản hay boolean là kiểu dữ liệu dùng cho việc phân loại các logic.string là kiểu dữ liệu để phân loại văn bản hay boolean là kiểu dữ liệu dùng cho việc phân loại các logic.

Type quan trọng như thế nào?

Statically typed language và Dynamically typed language

Statically typed language

Dynamically typed languageyeulaptrinh.vn nhéyeulaptrinh.vn nhé

Statically typed language và Dynamically typed language

Statically typed language statically typed language hoặc dynamically typed language

Statically typed language

Dynamically typed languageyeulaptrinh.vn nhé

Statically typed language statically typedlanguage hoặc dynamically typedlanguagestatically typedlanguage hoặc dynamically typedlanguage

Dynamically typed languageyeulaptrinh.vn nhé

Statically typed language statically typedlanguage hoặc dynamically typedlanguagestatically typedlanguage hoặc dynamically typedlanguage

Dynamically typed language

Static Type-checking

Statically typed language statically typedlanguage hoặc dynamically typedlanguagestatically typedlanguage hoặc dynamically typedlanguage

Dynamically typed language

Static Type-checking

Lợi ích của Static Type-checking

Điểm hạn chế của Static Type-checkingstatic type-checking.

Non-exception Failures & Types for Tooling khi chúng ta sử dụng một biến, nó sẽ hiểu được kiểu của biến dữ liệu của mình là gì => biết chúng có những thuộc tính nào, những phương thức nào => gợi ý các phương thức, thuộc tính liên quan và báo lỗi khi chúng ta sử dụng sai.

Nội dung của bàistatic type-checking.static type-checking.

Cách thức hoạt động: khi chúng ta sử dụng một biến, nó sẽ hiểu được kiểu của biến dữ liệu của mình là gì => biết chúng có những thuộc tính nào, những phương thức nào => gợi ý các phương thức, thuộc tính liên quan và báo lỗi khi chúng ta sử dụng sai. khi chúng ta sử dụng một biến, nó sẽ hiểu được kiểu của biến dữ liệu của mình là gì => biết chúng có những thuộc tính nào, những phương thức nào => gợi ý các phương thức, thuộc tính liên quan và báo lỗi khi chúng ta sử dụng sai. khi chúng ta sử dụng một biến, nó sẽ hiểu được kiểu của biến dữ liệu của mình là gì => biết chúng có những thuộc tính nào, những phương thức nào => gợi ý các phương thức, thuộc tính liên quan và báo lỗi khi chúng ta sử dụng sai.

Để làm rõ hơn, chúng ta cùng vào một ví dụ cụ thể nhé.
Chúng ta tạo một file rỗng từ visual studio code và chọn ngôn ngữChọn typescriptThành quả thu được như sau

Bài viết trước mình đã hướng dẫn các bạn cách cài đặt môi trường cho TypeScript bằng Visual Studio, từ bài học này trở đi chúng ta sẽ sử dụng Visual Studio Code để thực hành nhé.

Visual Studio Code mình đang sử dụng là Version: 1.58.2 (Universal) trên MacOSChúng ta tạo một file rỗng từ visual studio code và chọn ngôn ngữChúng ta tạo một file rỗng từ visual studio code và chọn ngôn ngữChọn typescriptThành quả thu được như sauChúng ta tạo một file rỗng từ visual studio code và chọn ngôn ngữChọn typescriptThành quả thu được như saugreeting như một hàm, thì nó đã báo lỗi ngay không cần phải chờ đến lúc compile code hay là runtime nữa.

Dynamically typed language

  • Static Type-checking
  • Lợi ích của Static Type-checking
  • Điểm hạn chế của Static Type-checking

Static Type-checking

  • Lợi ích của Static Type-checking
  • Điểm hạn chế của Static Type-checkingRuntime Type Checking mình sẽ nói rõ ở những bài viết sau nhé.

Lợi ích của Static Type-checking

Điểm hạn chế của Static Type-checking

  • Non-exception Failures & Types for Tooling
  • Nội dung của bàistatic type-checking.static type-checking.
  • Cách thức hoạt động: khi chúng ta sử dụng một biến, nó sẽ hiểu được kiểu của biến dữ liệu của mình là gì => biết chúng có những thuộc tính nào, những phương thức nào => gợi ý các phương thức, thuộc tính liên quan và báo lỗi khi chúng ta sử dụng sai. khi chúng ta sử dụng một biến, nó sẽ hiểu được kiểu của biến dữ liệu của mình là gì => biết chúng có những thuộc tính nào, những phương thức nào => gợi ý các phương thức, thuộc tính liên quan và báo lỗi khi chúng ta sử dụng sai. khi chúng ta sử dụng một biến, nó sẽ hiểu được kiểu của biến dữ liệu của mình là gì => biết chúng có những thuộc tính nào, những phương thức nào => gợi ý các phương thức, thuộc tính liên quan và báo lỗi khi chúng ta sử dụng sai.
  • Để làm rõ hơn, chúng ta cùng vào một ví dụ cụ thể nhé.
  • Bài viết trước mình đã hướng dẫn các bạn cách cài đặt môi trường cho TypeScript bằng Visual Studio, từ bài học này trở đi chúng ta sẽ sử dụng Visual Studio Code để thực hành nhé.

Visual Studio Code mình đang sử dụng là Version: 1.58.2 (Universal) trên MacOSChúng ta tạo một file rỗng từ visual studio code và chọn ngôn ngữChúng ta tạo một file rỗng từ visual studio code và chọn ngôn ngữChọn typescriptThành quả thu được như sauChúng ta tạo một file rỗng từ visual studio code và chọn ngôn ngữChọn typescriptThành quả thu được như sau

  • Chúng ta có thể phát hiện bug ngay khi code, đỡ tốn thời gian để debug.
Các biến khai báo, các type sẽ được kiểm tra một cách tự động, cho nên nếu trong một dự án có một người mới vào tham gia thì sẽ dễ dàng hơn trong việc tiếp cận, maintaince dự án.
  • Cùng với hỗ trợ của các IDE, text editor, chúng ta sẽ tiết kiệm được rất nhiều thời gian trong việc viết code.
Khá là rối và cần thời gian thích nghi cho những bạn nào đã quen code bằng JavaScript. Cảm tưởng nếu trước đây viết một cách tự do thì bây giờ phải chú ý nếu không thì sẽ bị báo lỗi khắp nơi :pKhi khai admin type là Human, thuộc tính city sẽ được suggest các giá trị phù hợp, tránh việc nhập sai
Khi khai admin type là Human, thuộc tính city sẽ được suggest các giá trị phù hợp, tránh việc nhập sai
  • etc..

Nó không thể kiểm soát hay báo lỗi của data type trong quá trình runtime, ví dụ khi fetch data từ một API bên ngoài vào. Cái này sẽ liên quan đến phần Runtime Type Checking mình sẽ nói rõ ở những bài viết sau nhé.Runtime Type Checking mình sẽ nói rõ ở những bài viết sau nhé.

Một số lỗi điển hình được kiểm soát như:

Băt buộc phải trả đúng giá trị, nếu không thì sẽ thông báo lỗi

Lỗi chính tả, đánh máy – tự động sửa tên hàm, tên field nếu gõ sai chính tả