Callable

Trong Python, Callable là một kiểu dữ liệu đặc biệt dùng để đại diện cho một hàm (function) hoặc bất kỳ thứ gì có thể được gọi, ví dụ: hàm, phương thức, hoặc class có định nghĩa __call__.

from typing import Callable

def run(callback: Callable[[int, str], bool]):
    ...

Khi nào dùng Callable?

Callable[[ArgType1, ArgType2, ...], ReturnType]

Ví dụ cụ thể

Viết một hàm run_operation nhận vào một hàm (callable) và hai số, sau đó gọi hàm đó với hai số đó.

from typing import Callable

# Hàm chính nhận vào một Callable
def run_operation(operation: Callable[[int, int], int], a: int, b: int) -> int:
    return operation(a, b)

# Một số hàm cụ thể
def add(x: int, y: int) -> int:
    return x + y

def multiply(x: int, y: int) -> int:
    return x * y

# Gọi thử
print(run_operation(add, 3, 5))        #  8
print(run_operation(multiply, 3, 5))   #  15

Giải thích

Thành phần Ý nghĩa
Callable[[int, int], int] Đây là một kiểu dữ liệu đại diện cho một hàm nhận 2 số nguyêntrả về một số nguyên
operation(a, b) Hàm được truyền vào sẽ được gọi như bình thường
add & multiply Là những hàm cụ thể bạn truyền vào

Mở rộng

Bạn có thể dùng Callable với các hàm lambda, hoặc class có __call__:

class Subtract:
    def __call__(self, x: int, y: int) -> int:
        return x - y

sub = Subtract()
print(run_operation(sub, 10, 3))  # 7

Tổng kết




Phiên bản #3
Được tạo 18 tháng 4 2025 03:17:01 bởi Đỗ Ngọc Tú
Được cập nhật 18 tháng 4 2025 04:46:33 bởi Đỗ Ngọc Tú