Как ввести функции высшего порядка в python 3.6?

В следующем коде:

def b(i: int) -> int:
    return i

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

print(a(1, b))

Как мы набираем намек на функцию b: ?, которая является параметром a? Спасибо.


person Jinho Choi    schedule 23.02.2017    source источник


Ответы (1)


Используйте typing.Callable generic, чтобы указать, что вы ожидаете функцию, которая принимает один целочисленный аргумент, возвращающий целое число:

from typing import Callable

def a(i: int, b: Callable[[int], int]) -> int:
    return i + b(i)

Callable[...] принимает два аргумента, первый — список типов аргументов, второй — возвращаемый тип.

person Martijn Pieters    schedule 24.02.2017