Хотя мне известно о концепции Python «утиная типизация», я иногда борюсь с типом аргументов функций или типом возвращаемого значения функции.
Теперь, если я сам написал функцию, я ДЕЙСТВИТЕЛЬНО знаю типы. Но что, если кто-то захочет использовать и вызвать мои функции, как он / она должен знать типы? Я обычно помещаю информацию о типе в строку документации функции (например: "...the id argument should be an integer..."
и "... the function will return a (string, [integer]) tuple."
)
Но действительно ли поиск информации в строке документации (и размещение ее там, как кодировщик) так, как предполагается?
Изменить: в то время как большинство ответов, похоже, направлены на «да, документ!» Я считаю, что «сложным» типам это не всегда легко.
Например: как кратко описать в строке документации, что функция возвращает список кортежей с каждым кортежем формы (node_id, node_name, uptime_minutes) и что элементы являются соответственно строкой, строкой и целым числом?
Документация Docstring PEP не дает никаких указаний по этому поводу.
Думаю, контраргументом будет то, что в этом случае следует использовать классы, но я считаю python очень гибким, поскольку он позволяет передавать эти вещи с помощью списков и кортежей, то есть без классов.
Ответы:
Что ж, с 2011 года все немного изменилось! Теперь в Python 3.5 есть подсказки типов, которые вы можете использовать для аннотирования аргументов и возврата типа вашей функции. Например это:
def greeting(name): return 'Hello, {}'.format(name)
теперь можно записать так:
def greeting(name: str) -> str: return 'Hello, {}'.format(name)
Как вы теперь можете видеть типы, есть своего рода дополнительная статическая проверка типов, которая поможет вам и вашей программе проверки типов исследовать ваш код.
для получения дополнительных объяснений я предлагаю взглянуть на сообщение в блоге о подсказках типов в блоге PyCharm .
источник
Так работают динамические языки. Это не всегда хорошо, особенно если документация плохая - кто-нибудь пробовал использовать плохо документированный фреймворк Python? Иногда приходится возвращаться к чтению первоисточника.
Вот несколько стратегий, которые помогут избежать проблем с набором текста:
Также один из самых важных моментов:
Следует передавать только несколько четко определенных и документированных типов. Все остальное должно быть очевидным, если взглянуть на код: не используйте странные типы параметров, приходящие издалека, которые вы не можете понять, глядя в область кода ...
Связанный (а также связанный с строками документации) в python есть метод, называемый
doctests
. Используйте это, чтобы задокументировать, как предполагается использовать ваши методы - и в то же время получить хорошее покрытие модульным тестом!источник
Я ходил на курс Coursera, там был урок, нас учили рецепту дизайна.
Приведенный ниже формат строки документации я нашел полезным.
Я думаю, что если строки документации будут написаны таким образом, это может очень помочь разработчикам.
Ссылка на видео [Смотрите видео] : https://www.youtube.com/watch?v=QAPg6Vb_LgI
источник
Да, вы должны использовать строки документации, чтобы сделать ваши классы и функции более удобными для других программистов:
Подробнее: http://www.python.org/dev/peps/pep-0257/#what-is-a-docstring
Некоторые редакторы позволяют видеть строки документации во время набора текста, что действительно упрощает работу.
источник
Да, именно так.
В Python функция не всегда должна возвращать переменную одного и того же типа (хотя ваш код будет более читабельным, если ваши функции всегда возвращают один и тот же тип). Это означает, что вы не можете указать единственный тип возвращаемого значения для функции.
Точно так же параметры не всегда должны быть одного типа.
источник
Гм ... "Краткого" описания этого нет. Это сложно. Вы сделали его сложным. И для этого требуется сложная документация в строке документации.
Извините, но сложность ... ну ... сложная.
источник
Да, поскольку это язык с динамическим типом;)
Прочтите это для справки: PEP 257
источник
Строки документации (и документация в целом). Python 3 вводит (необязательные) аннотации функций, как описано в PEP 3107 (но не оставляйте строки документации)
источник