Динамическая и статическая, сильная и слабая , явная и неявная типизации
1. Динамическая и статическая типизация
Статическая
Тип переменной известен на этапе компиляции, нельзя присвоить значение другого типа.
int x = 5; x = "hello"
— ошибка в C++
Динамическая
Тип переменной определяется во время выполнения, можно менять тип.
Python: x = 5; x = "hello"
— работает
Python — язык с динамической типизацией.
x = 10 # int
x = "text" # теперь str — это нормально в Python
2. Сильная и слабая типизация
Сильная
Python не позволяет неявно преобразовывать несовместимые типы.
"5" + 5
→ ошибка TypeError
Слабая
Язык позволяет неявное преобразование типов.
JavaScript: "5" + 5
→ "55"
Python — язык с сильной типизацией, но динамической.
# Ошибка в Python
x = "5"
y = 2
print(x + y) # TypeError
3. Явная и неявная типизация (Type Hinting)
Неявная: Python сам определяет тип переменной.
x = 10 # int
y = "text" # str
Явная: с помощью аннотаций типов (
type hints
).
def add(a: int, b: int) -> int:
return a + b
x: str = "hello"
Примечание: Type hints не влияют на выполнение кода, но помогают IDE, линтерам и проверке типов (mypy).
4. Схема для Python
Python:
- Динамическая типизация
- Сильная типизация
- Неявная по умолчанию
- Явная через type hints
5. Применение в автотестах
Type hints полезны для улучшения читаемости тестов и функций утилит.
Проверка типов помогает избежать ошибок в сложных тестовых сценариях.
def login(user: str, password: str) -> bool:
# возвращает True если логин успешен
...
Last updated
Was this helpful?