Как указать, что функция ожидает функцию в качестве параметра или возвращает функцию через аннотации функций?

Вы можете использовать аннотации функций в python 3, чтобы указать типы параметров и возвращаемое значение, например:

def myfunction(name: str, age: int) -> str: return name + str(age) #usefulfunction 

Но что, если вы пишете функцию, которая ожидает функцию как параметр или возвращает ее?

Я понимаю, что вы можете написать любое допустимое выражение для аннотаций, чтобы я мог написать «функцию» как строку, но это лучший / единственный способ сделать это? Нет ничего похожего на встроенные типы int/float/str/list/dict т. Д.? Я знаю о callable , но мне интересно, есть ли что-нибудь еще.

  • Изменить атрибут функции внутри своего тела?
  • Правильное использование глобальных переменных в Python 3
  • Что случилось с thread.start_new_thread в python 3
  • Почему идентификатор класса Python не уникален при вызове быстро?
  • Пусть класс ведет себя так, как будто это список в Python
  • Как сортировать 2 элементарный набор строк в смешанном порядке Используя ключевой параметр (не cmp)
  • Python Script возвращает непреднамеренное «None» после выполнения функции
  • Найти самую длинную последовательность из 0 в списке целых чисел
  • 2 Solutions collect form web for “Как указать, что функция ожидает функцию в качестве параметра или возвращает функцию через аннотации функций?”

    Для аннотаций нет стиля. Либо используйте callable , types.FunctionType либо строку.

    PS: callable был недоступен в Python 3.0 и 3.1

    Очень интересно … Я даже не слышал о функциях аннотаций в Python 3. Следующий код интерпретатора предполагает, что вы можете использовать function вместо str и int . Только мои два цента.

     >>> a = lambda x: x*2 >>> type(a) <class 'function'> 
    Python - лучший язык программирования в мире.