Elementor Header #8

30. Сильная (или Строгая) типизация

Добро пожаловать на тридцатый урок по Python! Сегодня мы обсудим концепцию сильной типизации (иногда называемой строгой типизацией) в Python. Понимание типизации важно для написания надежного и безопасного кода, а также для эффективного использования возможностей языка Python.

Что такое сильная типизация?

Сильная типизация означает, что тип переменной не изменяется неявно. Если переменная имеет определенный тип, то операции, несовместимые с этим типом, приводят к ошибкам. Python является языком с сильной типизацией, что помогает предотвратить многие ошибки, связанные с типами данных.

Примеры сильной типизации в Python

Пример 1: Сложение числа и строки

В Python нельзя неявно смешивать типы данных, такие как целые числа и строки.

				
					x = 10
y = "5"
# print(x + y)  # Это вызовет ошибку TypeError: unsupported operand type(s) for +: 'int' and 'str'

				
			

Чтобы выполнить такую операцию, необходимо явно преобразовать один из типов:

				
					x = 10
y = "5"
print(x + int(y))  # Вывод: 15

				
			

Пример 2: Строгое соблюдение типов

Если у нас есть функция, которая ожидает определенный тип данных, передача данных неправильного типа вызовет ошибку.

				
					def add_numbers(a: int, b: int) -> int:
    return a + b

# add_numbers(10, "20")  # Это вызовет ошибку TypeError: unsupported operand type(s) for +: 'int' and 'str'

				
			

Динамическая и Сильная типизация

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

Пример динамической типизации

				
					var = 10
print(type(var))  # <class 'int'>

var = "Hello"
print(type(var))  # <class 'str'>

				
			

Сильная типизация и неизменяемые типы

Некоторые типы данных в Python являются неизменяемыми (immutable), что означает, что после их создания они не могут быть изменены. К таким типам относятся строки, кортежи и числа.

Пример неизменяемых типов

				
					s = "hello"
# s[0] = "H"  # Это вызовет ошибку TypeError: 'str' object does not support item assignment

t = (1, 2, 3)
# t[0] = 0  # Это вызовет ошибку TypeError: 'tuple' object does not support item assignment

				
			

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

В Python можно использовать аннотации типов для указания типов переменных и параметров функций. Аннотации типов помогают повысить читаемость кода и выявлять ошибки на этапе разработки.

Пример аннотаций типов

				
					def greet(name: str) -> str:
    return f"Hello, {name}!"

greeting = greet("Alice")
print(greeting)  # Вывод: Hello, Alice!

				
			

Примеры использования сильной типизации

Пример 1: Функция с аннотациями типов

				
					def multiply(a: int, b: float) -> float:
    return a * b

result = multiply(5, 2.5)
print(result)  # Вывод: 12.5

				
			

Пример 2: Явное приведение типов

				
					def divide(a: int, b: int) -> float:
    return a / b

x = 10
y = 3
division_result = divide(x, y)
print(division_result)  # Вывод: 3.3333333333333335

				
			

Пример 3: Проверка типов с использованием isinstance

				
					def safe_addition(a, b):
    if isinstance(a, (int, float)) and isinstance(b, (int, float)):
        return a + b
    else:
        raise TypeError("Оба аргумента должны быть числами")

try:
    print(safe_addition(10, 5))  # Вывод: 15
    print(safe_addition(10, "5"))  # Это вызовет ошибку TypeError
except TypeError as e:
    print(e)

				
			

Заключение

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

logo