Các kiểu trong Python
Bài viết này giải thích về các kiểu trong Python.
YouTube Video
Các kiểu trong Python
Module typing
trong Python được sử dụng để giới thiệu gợi ý kiểu cho Python. Nó được giới thiệu lần đầu tiên trong Python 3.5 và được sử dụng để cải thiện khả năng đọc và bảo trì mã. Gợi ý kiểu không ảnh hưởng đến thời gian chạy của mã nhưng cho phép kiểm tra kiểu với các IDE và công cụ phân tích tĩnh.
Cơ bản về Gợi ý Kiểu
Gợi ý kiểu làm rõ ý định của mã bằng cách chỉ định rõ ràng kiểu của các hàm và biến. Trong ví dụ dưới đây, kiểu được chỉ định cho các tham số và giá trị trả về.
1def add_numbers(a: int, b: int) -> int:
2 return a + b
3
4result: int = add_numbers(5, 10)
5print(result) # 15
Trong mã trên, a
và b
thuộc kiểu số nguyên (int
), và giá trị trả về của hàm cũng được chỉ định rõ ràng là một số nguyên. Ngay cả với gợi ý kiểu, các kiểu không bị áp đặt nghiêm ngặt, nhưng cảnh báo có thể được hiển thị trong khi phát triển nếu có sự không khớp kiểu.
Các Gợi ý Kiểu Chính
Module typing
trong Python cung cấp nhiều lớp và hàm để định nghĩa gợi ý kiểu. Dưới đây là danh sách các gợi ý kiểu phổ biến.
int
: số nguyênstr
: chuỗifloat
: số thực dấu chấm độngbool
: giá trị logic (đúng/sai)List
: danh sáchDict
: từ điểnTuple
: bộ giá trị không đổiSet
: tập hợp
Kiểu List
Loại danh sách được chỉ định bằng lớp List
. Bạn cũng có thể chỉ định rõ ràng loại của các phần tử trong danh sách.
1from typing import List
2
3def sum_list(numbers: List[int]) -> int:
4 return sum(numbers)
5
6print(sum_list([1, 2, 3])) # 6
Trong ví dụ này, tất cả các phần tử trong danh sách được mong đợi thuộc loại int
.
Loại Dict
Một loại từ điển được định nghĩa bằng Dict
. Loại của key và value có thể được chỉ định.
1from typing import Dict
2
3def get_student_age(students: Dict[str, int], name: str) -> int:
4 return students.get(name, 0)
5
6students = {"Alice": 23, "Bob": 19}
7print(get_student_age(students, "Alice")) # 23
Trong ví dụ này, từ điển sử dụng str
làm loại key và int
làm loại value.
Loại Tuple
Tuple được chỉ định bằng loại Tuple
. Bạn có thể chỉ định loại của từng phần tử trong tuple một cách riêng lẻ.
1from typing import Tuple
2
3def get_person() -> Tuple[str, int]:
4 return "Alice", 30
5
6name, age = get_person()
7print(name, age) # Alice 30
Ở đây, hàm get_person
được hiển thị trả về một tuple chứa một chuỗi và một số nguyên.
Loại Union
Loại Union
được sử dụng để chỉ rõ rằng nhiều loại kiểu dữ liệu có thể chấp nhận được.
1from typing import Union
2
3def process_value(value: Union[int, float]) -> float:
4 return value * 2.0
5
6print(process_value(10)) # 20.0
7print(process_value(3.5)) # 7.0
Trong ví dụ này, hàm process_value
nhận hoặc một int
hoặc float
làm tham số và trả về kết quả loại float
.
Loại Optional
Loại Optional
được sử dụng khi một biến có thể là None
. Nó được cung cấp như một cách viết tắt cho Union[Type, None]
.
1from typing import Optional
2
3def greet(name: Optional[str] = None) -> str:
4 if name is None:
5 return "Hello, Guest!"
6 return f"Hello, {name}!"
7
8print(greet()) # Hello, Guest!
9print(greet("Alice")) # Hello, Alice!
Ở đây, nó cho thấy rằng khi name
không được chỉ định, nó sẽ được xử lý là None
.
Loại Generic
Loại Generic là một cách để biểu diễn trừu tượng loại phần tử mà một cấu trúc dữ liệu chứa. Trong module typing
, bạn có thể định nghĩa loại Generic bằng cách sử dụng TypeVar
.
1from typing import TypeVar, List
2
3T = TypeVar('T')
4
5def get_first_element(elements: List[T]) -> T:
6 return elements[0]
7
8print(get_first_element([1, 2, 3])) # 1
9print(get_first_element(["a", "b", "c"])) # a
Trong ví dụ này, get_first_element
là một hàm mà trả về phần tử đầu tiên của một danh sách, và nó hoạt động không phụ thuộc vào loại của danh sách.
Bí danh loại
Một bí danh loại là một cách để đơn giản hóa định nghĩa loại phức tạp bằng cách đặt cho chúng một tên rõ ràng.
1from typing import List, Tuple
2
3Coordinates = List[Tuple[int, int]]
4
5def get_coordinates() -> Coordinates:
6 return [(0, 0), (1, 1), (2, 2)]
7
8print(get_coordinates()) # [(0, 0), (1, 1), (2, 2)]
Trong ví dụ này, một bí danh loại Coordinates
được định nghĩa để dễ dàng biểu thị một loại với các tuple bên trong một danh sách.
Tóm tắt
Mô-đun typing
trong Python rất hữu ích để cải thiện tính dễ đọc và khả năng duy trì của mã nguồn. Bằng cách sử dụng gợi ý kiểu đúng cách, bạn có thể giúp ngăn chặn không tương thích kiểu và lỗi, đặc biệt trong các dự án quy mô lớn hoặc phát triển nhóm. Các kiểu chỉ là một công cụ hỗ trợ phát triển và không ảnh hưởng đến hành vi lúc chạy, do đó duy trì sự linh hoạt của mã nguồn.
Bạn có thể làm theo bài viết trên bằng cách sử dụng Visual Studio Code trên kênh YouTube của chúng tôi. Vui lòng ghé thăm kênh YouTube.