Вызываемые объекты

Как известно функции в Python это обычные объекты, которые можно передавать в другие функции, возвращать из других функций и т. п., поэтому для них тоже есть свой тип Callable:

from typing import Callable

def mysum(a: int, b: int) -> int:
    return a + b


def process_operation(operation: Callable[[int, int], int],
                      a: int, b: int) -> int:
    return operation(a, b)

print(process_operation(mysum, 1, 5))  # 6

Здесь для аргумента operation функции process_operation проставлен тип Callable[[int, int], int]. Здесь [int, int] — это типы аргументов функции operation, получается, что у этой функции должно быть два аргумента и они оба должны иметь тип int. Последний int в определении типа Callable[[int, int], int] обозначает тип возвращаемого функцией значения.