Как указать тип функции в подсказках типа?

Я хочу использовать подсказки типа в моем текущем проекте Python 3.5. Моя функция должна принимать функцию как параметр.

Как я могу указать функцию типа в подсказках типа?

import typing def my_function(name:typing.AnyStr, func: typing.Function) -> None: # However, typing.Function does not exist. # How can I specify the type function for the parameter `func`? # do some processing pass 

Я проверил PEP 483 , но не смог найти подсказку типа функции.

One Solution collect form web for “Как указать тип функции в подсказках типа?”

Как отметил @jonrsharpe в комментарии, это можно сделать с помощью typing.Callable :

 from typing import AnyStr, Callable def my_function(name: AnyStr, func: Callable) -> None: 

Проблема: Callable on Callable own переводится на Callable[..., Any] что означает:

Вызываемый принимает любое количество / тип аргументов и возвращает значение любого типа. В большинстве случаев это не то, что вы хотите, так как вы разрешите почти любую функцию, которая будет передана. Вы хотите, чтобы также были намечены параметры функции и типы возвращаемых значений.

Вот почему многие types typing были перегружены для поддержки суб-скриптов, которые обозначают эти дополнительные типы. Итак, если, например, у вас была функция sum которая принимает два int s и возвращает int :

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

Ваша аннотация для этого будет:

 Callable[[int, int], int] 

то есть параметры подпишутся во внешней подписке с типом возврата в качестве второго элемента во внешней подписке. В целом:

 Callable[[ParamType1, ParamType2, .., ParamTypeN], ReturnType] 
  • Список, возвращаемый функцией map, исчезает после одного использования
  • Python HTMLTestRunner не создает отчет
  • Как запустить метод до / после всех вызовов функций класса с переданными аргументами?
  • Палиндром Python 3.2
  • HTTPS-запрос приводит к сбросу соединения в Windows с Python 3
  • Matplotlib FuncAnimation для диаграммы рассеяния
  • Firebase Cloud Messaging (FCM) в Python с pyFCM - Регистрация клиента
  • Тип ошибки Тип расщепления: set
  •  
    Interesting Posts for Van-Lav

    tf.get_collection для извлечения переменных одной области

    Можем ли мы использовать переменную python для хранения всего файла?

    Как я могу получить список семейства шрифтов (или имя шрифта) в matplotlib

    Matplot: Как построить истинные / ложные или активные / деактивированные данные?

    Почему ответ Селена не имеет сеанса?

    Python: кросс-платформенное решение для обнаружения физических не-HT-процессоров?

    Расширение класса Flask как основного приложения

    Экспорт в формат Matplotlib PDF использует неправильный шрифт

    Как использовать ведение журнала с файловым файлом python и настроить имя файла журнала

    Python Pandas Dataframe добавляет строки

    «Пустой набор тестов», запуская тесты Django с Pycharm (тесты обнаруживаются, если они запускаются из оболочки)

    Сравнение скорости с Project Euler: C против Python против Erlang vs Haskell

    Как отслеживать blob с помощью OpenCV и Python

    Найдите, какой libjpeg используется PIL / PILLOW

    группа pymongo по дате

    Python - лучший язык программирования в мире.