11.1 Số lượng tham số vô hạn
Trong Python, các hàm có thể được thiết kế để chấp nhận số lượng tham số vô hạn. Điều này đạt được thông qua các đối số được truyền qua *args
cho các tham số thông thường và **kwargs
cho các tham số được truyền theo tên.
Sử dụng *args
*args
cho phép một hàm nhận số lượng đối số không nhất định về vị trí, mà hàm sẽ coi như một bộ dữ liệu. Ví dụ sử dụng:
def print_all(*args):
for item in args:
print(item)
print_all(1, 'apple', True) # in ra 1, apple và True.
Biến args
sẽ chứa bộ dữ liệu của tất cả các tham số đã được truyền vào hàm khi gọi nó.
Sử dụng **kwargs
**kwargs
hoạt động tương tự như *args
, nhưng cho các đối số được truyền theo tên và được biểu diễn dưới dạng từ điển. Điều này cho phép hàm nhận bất kỳ số lượng đối số có tên nào:
def print_named_items(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_named_items(fruit='apple', number=1) # in ra fruit: apple và number: 1
Những cơ chế này làm cho hàm cực kỳ linh hoạt và hữu ích trong các tình huống mà số lượng tham số chưa biết trước, chẳng hạn như khi phát triển API hoặc các hàm xử lý sự kiện.
Chúng ta sẽ tìm hiểu kỹ hơn về cả hai trường hợp này sau, nhưng các bạn nên biết rằng trong Python, rất dễ để có quyền truy cập vào tất cả các đối số được truyền vào hàm. Và bạn có thể truyền vào hàm bất cứ thứ gì bạn muốn.
11.2 Chỉ định kiểu
Như các bạn đã biết, các biến trong Python không có kiểu đã được xác định trước. Bạn có thể gán giá trị của bất kỳ loại nào cho một biến và trong dòng tiếp theo gán giá trị của loại mới, v.v.
Điều này rất thuận tiện cho các chương trình nhỏ và không thật sự thuận tiện cho các dự án lớn. Khi chương trình rất lớn và số lượng hàm lên đến hàng nghìn, lập trình viên không thể nhớ chính xác dữ liệu nào cần được truyền vào hàm và theo thứ tự nào.
Trong các ngôn ngữ có kiểu tĩnh, IDE tự động gợi ý cho lập trình viên các tham số và kiểu cần được truyền khi gọi hàm. Nhưng Python - vẫn là một ngôn ngữ có kiểu động, và ở đây không có nguồn nào để dựa vào cho các gợi ý như vậy.
Vì vậy, các người tạo Python đã nghĩ ra một thứ gọi là type hinting
. Đây như là các loại biến, nhưng chúng giống như các khuyến nghị hơn là các loại thật sự. Không có hạn chế nào đối với các loại đã được chỉ định.
Chỉ định kiểu đã được giới thiệu trong Python 3.5 và trở nên phổ biến nhờ tiêu chuẩn PEP 484. Đây là cơ chế cho phép lập trình viên xác định các kiểu dự kiến của các biến, đối số và giá trị trả về của chức năng.
Mặc dù Python vẫn là một ngôn ngữ gõ động, chỉ định kiểu thêm rõ ràng và hỗ trợ kiểm tra kiểu tĩnh. Ví dụ về chỉ định kiểu:
def add_numbers(a: int, b: int) -> int:
return a + b
Kiểu của một biến được chỉ định qua dấu hai chấm, và kiểu của kết quả trả về của hàm qua mũi tên.
Những lợi ích mà chỉ định kiểu mang lại:
- Cải thiện tài liệu: Việc chỉ định rõ ràng các kiểu làm cho mã tự tài liệu hóa.
- Tự động hoàn thiện tốt hơn: Trình soạn thảo mã có thể sử dụng thông tin về kiểu để cải thiện khả năng tự động hoàn thiện.
- Hỗ trợ trong gỡ lỗi: Kiểm tra kiểu tĩnh có thể phát hiện các lỗi tiềm ẩn trước khi chương trình chạy.
Công cụ để làm việc với kiểu
Bản thân Python không phản hồi với các kiểu biến đã khai báo. Thay vào đó, Python có tiện ích đặc biệt — mypy — trình phân tích kiểu tĩnh phổ biến, giúp phát hiện lỗi trong mã sử dụng chỉ định kiểu.
GO TO FULL VERSION