Аннотация типов в Python

Аннотация типов в Python Статьи

Подпишись на мой канал в Telegram

Рассмотрим как правильно использовать аннотации типов в Python.

Введение

Python — язык с динамической типизацией и прямое указание типов переменным не требуется. Но для программиста использовать аннотации очень удобно как в процессе разработки, так и во время отладки своего приложения.

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

Например, создание переменных в Java:

String name = "Egor";       

int age; 
                   
age = 29;

В отличие от Java, Python предоставляет нам гибкость в объявлении и присвоении переменных без указания их типов:

name = "Egor"

age = 29

При таком типе кодирования Python автоматически вычисляет тип данных, который был присвоен переменной. Проверить это можно с помощью функции type():

print(type(name))              
<class 'str'>

print(type(age))               
<class 'int'>

Указание типов в переменных

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

Указать тип переменной при ее объявлении

variable_name: variable_type = value

weather: str = "cloudy"

degrees: int                    

degrees = 32

Также обратите внимание, что даже после того, как на Python указан тип переменной, вы все равно можете присвоить ей другой тип данных:

degrees: int = 32
32

degrees = "thirty-two"
thirty-two

Указание типа переменной на Python не означает, что переменная может принимать только значения этого типа. Это просто подсказки, которые информируют пользователя о том, какой тип имеет переменная.

Указание типов в функциях

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

Например, вот простая функция, которая принимает два аргумента и возвращает сумму.

def sum(a, b):
    return a + b

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

Вызов этой функции работает при поставке значений int и других значений, таких как строки, списки и кортежи:

sum(3, 5)                               
8

sum([1, 0, 5], ['java', 'c++'])
[1, 0, 5, 'java', 'c++']

sum('2', '3')                           
23

Здесь видно, что функция sum() хорошо работает, когда она вызывается либо со значениями int, либо со строковыми значениями, либо даже со списками.

Но целью функции sum() является добавление двух целых чисел, а не двух списков или строк. Теперь мы можем предоставить подсказки типов для параметров в определении функции, указывая тип, который мы хотим разрешить.

Чтобы указать, что мы хотим разрешить только типы int, мы можем изменить определение функции так, чтобы оно выглядело так:

def sum(a: int, b: int):
    return a + b

Это информирует вызывающую функцию о том, что аргументы, требуемые для функции sum(), должны быть целыми числами, а не иначе.

Аналогично, чтобы указать только строковые типы, мы изменим нашу функцию, чтобы она указывала как:

def sum(a: str, b: str):
    return a + b

Указание типа возврата функции

Можно также указать возвращаемое значение вызова функции:

def sum(number1, number2) -> int:
    return number1 + number1

Это информирует вызывающую функцию о том, что тип возврата функции sum() должен быть целым числом.

Заключение

Использование аннотаций типов позволяет разработчикам легче читать код и искать возникающие ошибки.

close

Бесплатная подписка

Введи свой адрес электронной почты и получай моментальный доступ к новым публикациям на сайте

Вступи в мою группу ВКонтакте

Егор Егоров

C 2017 года сижу на игле Python. Люблю создавать контент, который помогает людям понять сложные вещи. Не представляю жизнь без спорта и чувства юмора.

Если не сложно, напиши комментарий, как тебе статья.

Оцените автора
Егоров Егор
Добавить комментарий

  1. Егор Егоров автор

    Ага, мысль в голове запуталась 🙂

    Ответить