Предположим, что у нас есть функция foo(a, b)
, которая является частью открытого API модуля python.
Есть ли способ запросить типы a
и b
, что функция ожидает?
Я знаю, что могу получить количество аргументов и их значения по умолчанию через модуль inspect
, но есть ли информация о типе?Есть ли способ получить типы аргументов функций?
ответ
Python - динамически типизированный язык, поэтому нет; функция должна документы их ожидания вместо этого.
Python 3.5 и более новая поддержка optional type hinting; если библиотека использует подсказки типов, вы можете запросить эту информацию с помощью typing.get_type_hints()
function для доступа к этой информации программно.
Как правило, функции Python должны принимать объекты, реализующие ожидаемые функциональные возможности, а не конкретные типы. Если ваша функция выполняет повторную последовательность для извлечения строк, она должна быть документирована как принятие (в терминах типа намека) объекта Iterable[str]
, а не списка или кортежа или другого определенного типа.
Кроме того, это не * тип * аргумента, а его доступные/реализованные * методы *, которые делают его подходящим как аргумент для конкретной функции, так как python использует ** утиную печать **. – jbndlr
- 1. Есть ли способ хранить различные типы указателей функций в контейнере
- 2. Есть ли способ определить типы аргументов шаблона класса шаблона?
- 3. Как определить типы аргументов для R-функций?
- 4. Получить типы параметров всех функций перегружает
- 5. Oracle: Есть ли способ получить типы данных столбцов для представления?
- 6. Есть ли удобный, удобный способ получить список фактических аргументов изнутри?
- 7. Есть ли способ получить арность аргументов, выполняемых функцией javascript?
- 8. Есть ли способ получить массив аргументов, переданных методу?
- 9. Есть ли способ конкатенировать анонимные типы C#?
- 10. Есть ли способ конвертировать эти неконвертируемые типы?
- 11. Получить типы аргументов в python
- 12. Есть ли способ просмотра сигнатур функций MonetDB
- 13. Есть ли способ отобразить график вызовов функций?
- 14. Могут ли анонимные типы конструкторов без аргументов?
- 15. Можно ли объявлять типы аргументов в javascript?
- 16. Есть ли способ определить общие типы в документации JS?
- 17. Есть ли способ заставить TypScript считать типы функций неэквивалентными, когда они имеют разные значения параметров?
- 18. Есть ли лучший способ получить копию DataRowView?
- 19. WCF :: ServiceHost & AddServiceEndpoint: меняются ли типы аргументов?
- 20. Есть ли встроенный способ вызова функций вызова Mongodb?
- 21. Частичного связывания Аргументов функций
- 22. Есть ли способ получить фрагмент сверху стека?
- 23. получить аргументы и типы класса аргументов
- 24. Objective C - Получить типы аргументов метода?
- 25. Есть ли способ получить поплавок из параметров функции varargs?
- 26. станд :: функциональные типы аргументов
- 27. Есть ли безопасный способ дифференцировать типы SendFailedExceptions из JavaMail
- 28. Groovy TimeDuration Типы аргументов
- 29. Есть ли способ для запуска jquery-функций для дочернего элемента?
- 30. Типы аргументов функции функции
Нет, не по умолчанию. Вы должны доверять своим программистам или как можно раньше в своей функции. Кроме того, документируйте свой общедоступный API. – jbndlr
Проверьте docstring функции с 'foo .__ doc__'. У этой информации должна быть информация, которую вы ищете, но нет никакой гарантии. Проблема в том, что Python не приводит переменные к определенному типу. Таким образом, вы можете попытаться передать строку в 'sqrt', например, и ничто не приведет к ошибке до времени выполнения. –