Аннотация типов в 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

Изучаешь Python?

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

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

Поделиться записью в социальных сетях


Добавить комментарий

Ваш адрес email не будет опубликован

«В низкоуровневых языках программирования, таких как Java, C, C++ и C#…» — мне кажется, это высказывание стоит переформулировать 🙂