Главная страница » 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-2025 Все права защищены. CodeFor.
Язык сайта: