Cách sử dụng Python Type Hints

27 tháng 9, 2021 By DEVERA ACADEMY

Trong bài viết này, chúng ta sẽ cùng tìm hiểu cách sử dụng gợi ý loại (Type Hints) để làm cho code Python của bạn rõ ràng và dễ đọc hơn.

Gợi ý kiểu (Type Hints) trong Python là gì?

Type Hints là một tính năng có sẵn trong Python 3.5 trở lên, cho phép chúng ta chỉ rõ kiểu dữ liệu của một biến khi khai báo. 

Type Hints cung cấp cho chúng ta hai lợi ích chính. Đầu tiên, nó giúp mọi người khi đọc code của mà chúng ta đã xây dựng biết được loại dữ liệu của biến được sử dụng. Thứ hai, trình thông dịch Python sử dụng Type Hint để kiểm tra và tìm lỗi, giúp bạn tránh khỏi một số lỗi khó chịu.

Trong các ngôn ngữ lập trình bậc thấp như Java, C, C ++ và C #, các biến được nhập đúng với kiểu - bạn phải khai báo kiểu dữ liệu khi tạo một biến.

Ví dụ như khi tạo các biến trong Java:

String name = "John";       # 'name' can only store a string

int age;                    # only an integer can be assigned to age

age = 23;                   # assigning a value to age

Trong khi đó Python là một ngôn ngữ định kiểu động, kiểu dữ liệu của các biến không cần phải được khai báo trước khi sử dụng. Tuy điều này làm nên tính dễ sử dụng, nhưng nó cũng gây khó cho việc bắt lỗi trong các chương trình phức tạp.

Ví dụ về khai báo động của một biến trong Python:

name = "John"

age = 23

Với phương pháp này, Python sẽ tự động tìm ra loại dữ liệu đã được gán cho một biến, chúng ta có thể xem lại kiểu dữ liệu bằng cách sử dụng hàm type():

print(type(name))              # <class 'str'>
print(type(age))               # <class 'int'>


Cách sử dụng Type Hints

Trong python, nếu bạn muốn chỉ định kiểu dữ liệu của các biến của mình, chúng ta sử dụng gợi ý kiểu như sau:

variable_name: variable_type = value

weather: str = "cloudy"

degrees: int                    # you can declare a variable before assigning
degrees = 32

Cũng lưu ý rằng ngay cả sau khi sử dụng Type Hints để chỉ kiểu dữ liệu, chúng ta vẫn có thể gán một kiểu dữ liệu khác cho biến:

degrees: int = 32
print(degrees)                      # 32

degrees = "thirty-two"
print(degrees)                      # thirty-two

Việc chỉ định một kiểu biến trong Python không có nghĩa là biến chỉ có thể chấp nhận các giá trị của kiểu đó bới đây là những thông báo cho người dùng biết loại biến đó là gì.


Thêm kiểu dữ liệu vào các hàm

Type Hints cũng cho phép bạn khai báo kiểu của các tham số và giá trị trả về của một hàm.

Ví dụ, đây là một hàm đơn giản nhận vào hai đối số và trả về tổng.

def sum(a, b):
    return a + b

Xem đoạn code này, người ta không thể chắc chắn liệu người gọi có cung cấp số nguyên làm đối số hoặc chuỗi hay bất kỳ kiểu dữ liệu nào khác hay không.

Lệnh gọi hàm này hoạt động khi được cung cấp các giá trị int và với các giá trị khác như chuỗi, danh sách và bộ giá trị (tuples):

sum(3, 5)                               # 8

sum([1, 0, 5], ['java', 'c++'])         # [1, 0, 5, 'java', 'c++']

sum('2', '3')   

Ở đây, bạn có thể thấy rằng hàm sum() hoạt động tốt khi nó được gọi với giá trị int, giá trị chuỗi hoặc thậm chí là danh sách.

Nhưng mục tiêu của hàm sum() là thêm hai số nguyên chứ không phải hai danh sách hoặc chuỗi. Bây giờ chúng ta có thể cung cấp gợi ý về kiểu cho các tham số trong định nghĩa Hàm cho biết kiểu mà chúng ta muốn cho phép.

Để chỉ ra rằng chúng ta chỉ muốn cho phép các kiểu int, chúng ta có thể thay đổi định nghĩa hàm thành:

def sum(a: int, b: int):
    return a + b

Điều này giúp thông báo cho người gọi hàm rằng các đối số được yêu cầu cho hàm sum() là số nguyên.

Tương tự, để chỉ ra các loại str được cho phép, chúng ta sẽ thay đổi hàm để chỉ định, ví dụ như là:

def sum(a: str, b: str):
    return a + b


Chỉ định kiểu trả về của một hàm

Người ta cũng có thể chỉ ra kiểu dữ liệu của giá trị mà một hàm trả về:

def sum(number1, number2) -> int :
    return number1 + number1

Thông báo cho người sử dụng rằng kiểu trả về của hàm sum() là một số nguyên.

Type Hints đôi khi còn được gọi là type annotations(chú thích kiểu), type hints, or parameter type declarations (gợi ý kiểu hoặc khai báo kiểu tham số).

Tác giả: PythonStacks

Dịch bởi Devera Academy