Типы в Python
В этой статье объясняются типы в Python.
YouTube Video
Типы в Python
Модуль typing
в Python используется для введения подсказок типов (type hints) в Python. Он был впервые представлен в Python 3.5 и используется для повышения читаемости и удобства сопровождения кода. Подсказки типов не влияют на выполнение кода, но позволяют проверять типы с помощью IDE и инструментов статического анализа.
Основы подсказок типов
Подсказки типов проясняют суть кода за счёт явного указания типов функций и переменных. В приведённом ниже примере указаны типы аргументов и возвращаемого значения.
1def add_numbers(a: int, b: int) -> int:
2 return a + b
3
4result: int = add_numbers(5, 10)
5print(result) # 15
В приведённом выше коде a
и b
являются целыми числами (int
), а возвращаемое значение функции также явно указано как целое число. Даже с подсказками типов строгого соблюдения типов не происходит, но в случае несоответствия типов во время разработки могут отображаться предупреждения.
Ключевые подсказки типов
Модуль typing
в Python предоставляет различные классы и функции для определения подсказок типов. Ниже приведён список распространённых подсказок типов.
int
: целое числоstr
: строкаfloat
: число с плавающей точкойbool
: булево значениеList
: списокDict
: словарьTuple
: кортежSet
: множество
Тип List
Тип списка указывается с помощью класса List
. Вы также можете явно указать тип элементов внутри списка.
1from typing import List
2
3def sum_list(numbers: List[int]) -> int:
4 return sum(numbers)
5
6print(sum_list([1, 2, 3])) # 6
В этом примере ожидается, что все элементы списка будут типа int
.
Тип Dict
Тип словаря определяется с помощью Dict
. Типы ключей и значений могут быть указаны.
1from typing import Dict
2
3def get_student_age(students: Dict[str, int], name: str) -> int:
4 return students.get(name, 0)
5
6students = {"Alice": 23, "Bob": 19}
7print(get_student_age(students, "Alice")) # 23
В этом примере словарь использует str
как тип ключа и int
как тип значения.
Тип Tuple
Кортежи указываются с использованием типа Tuple
. Вы можете указать тип каждого элемента кортежа отдельно.
1from typing import Tuple
2
3def get_person() -> Tuple[str, int]:
4 return "Alice", 30
5
6name, age = get_person()
7print(name, age) # Alice 30
Здесь функция get_person
возвращает кортеж, содержащий строку и число.
Тип Union
Тип Union
используется для явного указания, что допустимы несколько типов.
1from typing import Union
2
3def process_value(value: Union[int, float]) -> float:
4 return value * 2.0
5
6print(process_value(10)) # 20.0
7print(process_value(3.5)) # 7.0
В этом примере функция process_value
принимает либо int
, либо float
в качестве аргумента и возвращает результат типа float
.
Тип Optional
Тип Optional
используется, когда переменная может быть None
. Он представлен в качестве сокращения для Union[Type, None]
.
1from typing import Optional
2
3def greet(name: Optional[str] = None) -> str:
4 if name is None:
5 return "Hello, Guest!"
6 return f"Hello, {name}!"
7
8print(greet()) # Hello, Guest!
9print(greet("Alice")) # Hello, Alice!
Здесь показано, что если name
не указан, он рассматривается как None
.
Обобщённые типы
Обобщённые типы — это способ абстрактного представления типа элементов, которые содержит структура данных. В модуле typing
вы можете определить обобщённые типы с использованием TypeVar
.
1from typing import TypeVar, List
2
3T = TypeVar('T')
4
5def get_first_element(elements: List[T]) -> T:
6 return elements[0]
7
8print(get_first_element([1, 2, 3])) # 1
9print(get_first_element(["a", "b", "c"])) # a
В этом примере get_first_element
— это функция, которая возвращает первый элемент списка, и она работает независимо от типа списка.
Псевдонимы типов
Псевдоним типа — это способ упростить сложные определения типов, дав им понятное имя.
1from typing import List, Tuple
2
3Coordinates = List[Tuple[int, int]]
4
5def get_coordinates() -> Coordinates:
6 return [(0, 0), (1, 1), (2, 2)]
7
8print(get_coordinates()) # [(0, 0), (1, 1), (2, 2)]
В этом примере псевдоним типа Coordinates
определён для простого представления типа с кортежами внутри списка.
Резюме
Модуль typing
в Python очень полезен для улучшения читаемости и сопровождаемости кода. При правильном использовании подсказок типов можно предотвратить несоответствия типов и ошибки, особенно в крупных проектах или при командной разработке. Типы являются лишь инструментом поддержки разработки и не влияют на поведение программы во время выполнения, что сохраняет гибкость кода.
Вы можете следовать этой статье, используя Visual Studio Code на нашем YouTube-канале. Пожалуйста, также посмотрите наш YouTube-канал.