Почему вам стоит поэкспериментировать с проверкой типов в Python
Python — замечательный динамически типизированный язык. Но многие считают это самым большим недостатком.
Но почему?
Динамически типизированные языки избавляют от головной боли, связанной с написанием «обыденных» объявлений типов. Это делает письмо приятнее и немного быстрее. Среда выполнения языка обрабатывает динамически типизированный язык.
Это означает, что некоторые ошибки, которые можно было бы устранить почти сразу после их появления, теперь будут оставаться молчаливыми до тех пор, пока не будет вызван код. И вы знаете, когда это произойдет, верно?
Работа с типами
Начиная с версии 3.5, в Python добавлена необязательная поддержка подсказок типов через модуль ввода.
Похоже, они хотят найти компромисс для обеих сторон. С одной стороны, люди, которым нравится свобода динамической типизации, могут продолжать игнорировать подсказки по типам. С другой стороны, люди, которым нравится безопасность статической типизации, могут получить выгоду от использования новой функциональности.
Как это использовать
Способ его использования или, по крайней мере, начала его использования довольно прост и понятен. Если вы знакомы, это очень похоже на способ статической типизации TypeScript. Вот пример:
# Typing is the core module that supports type checking.
# In here we import List, which provided equivalent functionality to
# the list() function or the [] equivalent shorthand
from typing import List
# We define a function, as usually but we add the expected
# type to the args and we add a return type too
def find_files_of_type(type: str, files_types: List[str]) -> bool:
return (type in files_types)
files_types: List[str] = [‘ppt’, ‘vcf’, ‘png’]
type_to_search: str = ‘ppt’
print(‘Found files of type {} in list? {}’.format(type_to_search,
find_files_of_type(type_to_search, files_types)))
Немного неловко, но все же ясно, правда? :)
Потенциальная ловушка
Возможно, вы заметили, что я упомянул слово «необязательно» несколькими строками выше. Итак, на момент написания этой статьи не существовало никаких ограничений по проверке типов.
Вы можете добавить к своим переменным любой нерелевантный тип. Проделайте с ними самые недопустимые, неуместные и «извращенные» операции, но Python и глазом не моргнет.
Если вы хотите обеспечить проверку типов, вам следует использовать средство проверки типов, такое как великий mypy.
Конечно, большинство IDE имеют некоторые функции проверки типов. Вот соответствующая документация для Pycharm.
Думаю, что я хотел бы видеть в будущем
- Интегрируйте механизм проверки типов в ядро языка.
- В результате вышесказанного появляются более плавные подсказки типов. Например, если включена проверка типов, мне не придется использовать для этого класс
List
илиTuple
. Сокращений[]
и()
должно быть достаточно.
Заключение
Спасибо, что прочитали эту статью. Это ни в коем случае не расширенное руководство по этой замечательной функциональности Python. Скорее, это вводный курс, который, я надеюсь, приведет к дальнейшим исследованиям.
Если вы начинаете новый проект на Python 3.5+, я бы рекомендовал поэкспериментировать с проверкой типов. Мне бы хотелось увидеть ваши предложения и мысли по поводу этой функции, поэтому не стесняйтесь оставлять комментарии.
Первоначально опубликовано в моем блоге.