Я хочу, чтобы моя функция была аннотирована, что она принимает другую функцию в качестве аргумента. Сначала мне показалось, что это будет работать нормально:Как правильно использовать функцию аннотации функции-аргумент
def my_function(func_argument: function):
pass
однако функция не решено. Я просматривал встроенные функции, и это действительно не так, в отличие от str, int и других, которые я обычно использую. Тем не менее, это должно быть где-то, потому что:
>>> def my_function():
... pass
...
>>> x = my_function
>>> type(x)
<class 'function'>
>>> type(x).__name__
'function'
Где определяется класс функций, почему он не встроен? Является ли моя первоначальная попытка правильной? На данный момент я пошел с аннотацией с types.FunctionType
, но он не чувствует себя хорошо, потому что повсюду мы намекаем str
не types.StringType
. И импортировать типы только для одной аннотации также странно. typing
библиотека также не имеет ничего такого, что помогло бы мне заменить это.
Кроме того, как бы FunctionType работу с типом аннотаций исполнившего библиотеки (я видел несколько из тех, кто летает)
Я пропустил Callable при наборе текста, но на самом деле это имеет смысл использовать, поскольку он работает как для лямбда, так и для функции. Мне не нравится, что он должен иметь тип возвращаемого значения, поскольку не все функции возвращают что-то - должны ли они тогда иметь None как второй аргумент? Кроме того, это не слишком понятно для кого-то, кто неопытен в наборе библиотеки, но я думаю, что это скорее проблема ввода, чем вопрос SO, спасибо :) – iScrE4m
@ iScrE4m 'None' может использоваться для функций, которые * не возвращают ничего *, они фактически возвращаются 'None'. –
Ну ладно, спасибо большое! – iScrE4m