Главная страница » Python » 49. Аннотации типов
Добро пожаловать на 49-й урок по Python! Сегодня мы поговорим об аннотациях типов (type annotations) — мощном инструменте, который помогает сделать ваш код более понятным и безопасным. Аннотации типов позволяют явно указать, какие типы данных ожидаются в аргументах функций и в их возвращаемых значениях.
Аннотации типов — это способ указания типов данных, которые должны использоваться в функции. Это не влияет на выполнение кода, но помогает инструментам статического анализа и разработчикам лучше понимать, какие типы данных ожидаются и возвращаются функцией.
Аннотации типов добавляются к параметрам функции и к значению, возвращаемому функцией. Аннотации типов не изменяют поведение программы, а служат только для документации и статического анализа кода.
Пример
def add(a: int, b: int) -> int:
return a + b
print(add(3, 4)) # Вывод: 7
В этом примере функция add
имеет аннотации типов, указывающие, что параметры a
и b
должны быть целыми числами (int
), и функция возвращает целое число (int
).
Аннотации типов делают код более понятным для других разработчиков и для вас самих в будущем, показывая, какие типы данных ожидаются в функции.
Пример
def greet(name: str, age: int) -> str:
return f"Hello, {name}. You are {age} years old."
Здесь видно, что name
должен быть строкой (str
), а age
— целым числом (int
).
Инструменты статического анализа, такие как MyPy, могут использовать аннотации типов для проверки правильности типов данных в вашем коде.
# Запустите команду mypy на этом файле, чтобы проверить правильность типов
def multiply(x: int, y: int) -> int:
return x * y
result = multiply(10, "5") # MyPy выдаст предупреждение о несоответствии типов
Многие интегрированные среды разработки (IDE) используют аннотации типов для предоставления подсказок и автозаполнения.
Для простых типов данных, таких как int
, str
, float
, используются аннотации, как показано выше.
Для коллекций (списки, множества, кортежи) можно использовать модули из пакета typing
.
Пример
from typing import List, Tuple
def process_numbers(numbers: List[int]) -> Tuple[int, int]:
return (min(numbers), max(numbers))
print(process_numbers([1, 2, 3, 4, 5])) # Вывод: (1, 5)
Здесь numbers
должен быть списком целых чисел (List[int]
), а функция возвращает кортеж из двух целых чисел (Tuple[int, int]
).
Если параметр может быть либо указанного типа, либо None
, используется Optional
.
Пример
from typing import Optional
def find_user(user_id: int) -> Optional[str]:
# Возвращает имя пользователя или None, если пользователь не найден
return None # Здесь просто пример, на практике будет поиск пользователя
Для обобщенных типов можно использовать TypeVar
и Generic
.
Пример
from typing import TypeVar, Generic, List
T = TypeVar('T')
class Stack(Generic[T]):
def __init__(self):
self.items: List[T] = []
def push(self, item: T) -> None:
self.items.append(item)
def pop(self) -> T:
return self.items.pop()
stack = Stack[int]()
stack.push(1)
print(stack.pop()) # Вывод: 1
Сегодня мы изучили аннотации типов в Python. Вы узнали, как использовать аннотации для указания типов данных в функциях и как это может помочь в улучшении читаемости кода, статическом анализе и поддержке IDE. Аннотации типов позволяют создать более четкую документацию для вашего кода и облегчить его понимание.
Наша цель и главная задача сделать качественное образование в вашем браузере
Телефон: +375 33 910-08-92
Email: info@codefor.tech
Адрес: г. Барановичи, ул. Пирогова, д. 7
© 2024 Все права защищены. CodeFor.