Легкий способ документировать ваш код и повысить скорость разработки

Когда разработчик начинает писать код Python (без подсказок типа), IDE, такая как PyCharm, обеспечивает надежную поддержку автозаполнения. Но по мере того, как количество строк и файлов увеличивается, мы начинаем замечать, что автозаполнение совершенно бесполезно. Вы не получаете те предложения автозаполнения, как раньше. Что тут происходит? Причина, по которой это происходит, заключается в том, что чем больше кода мы инкапсулируем в функции, тем более нечеткими становятся типы данных переменных. Следовательно, без информации о типах переменных данных, как может работать линтер?

Чтобы решить эту проблему, Python включил PEP 484 в версию Python 3.5. С помощью этих подсказок программист может теперь задокументировать, какие типы данных разрешены в переменной.

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

Статически типизированные и динамически типизированные языки

В первую очередь существует два типа языков программирования. Во-первых, это языки со статической типизацией, такие как C ++ и Java, а во-вторых, языки с динамической типизацией, такие как JavaScript и Rust. Языки со статической типизацией требуют, чтобы переменные объявлялись с их типами данных перед их использованием. Напротив, языки с динамической типизацией работают с переменными, объявленными во время выполнения. Всегда существует риск столкнуться с ошибкой времени выполнения в языках с динамической типизацией, поэтому разработчики должны позаботиться о таких сценариях, используя try-except или обеспечивая возвращаемые типы.

В этом коде Python, если число не соответствует какой-либо логике, по умолчанию возвращается None. Когда это происходит, возникает ошибка AttributeError во время выполнения, потому что мы пытаемся использовать .lower (), строковый атрибут, для типа данных None.

Сделает ли использование подсказок типа Python статически типизированным языком?

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

Эта суть объясняет, как подсказки типов по существу игнорируются интерпретатором Python.

Как писать подсказки типа?

Синтаксис выглядит так

<variable name>: <data type> = <value>

Подсказки типа не только проверяют типы данных, но также могут использоваться с именем класса для обозначения экземпляра класса.

Например, здесь предоставленная подсказка типа предназначена для класса User,, в котором объявлены методы exist, reset и validate_password, и мы видим, что линтер уже предлагает их в предложениях для нас. Точно так же переменная, обозначенная как str, будет иметь все атрибуты, связанные со строкой в ​​предложении, такие как нижний, верхний, заголовок и т. Д. Когда для параметров функции указаны типы и передается неверная переменная типа данных, разработчик предупреждается о потенциальной ошибке. линтер.

Указание типов, возвращаемых функцией

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

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

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

Влияет ли использование подсказок типа на работу интерпретатора?

Никакого влияния на производительность с подсказками типа или без них нет. Cpython игнорирует подсказки типа, аналогично тому, как комментарии удаляются во время выполнения.

Вывод

Чтобы подвести итоги статьи, введите подсказки:

  1. Не позволяйте нам делать глупых ошибок в именах атрибутов.
  2. Сделайте код более читабельным.
  3. Самостоятельно документирует код.
  4. Помогает в автозаполнении.
  5. Вместе с линтером предупреждает разработчика о возможной несовместимости.

Спасибо, что дочитали до конца! Если вам понравилась эта статья или вас интересуют такие темы, как автоматизация и Python, подпишитесь на меня или подпишитесь на мою рассылку.

Больше контента на plainenglish.io