# Динамическая и статическая, сильная и слабая , явная и неявная типизации

### **1. Динамическая и статическая типизация**

| Типизация        | Описание                                                                                 | Пример                                  |
| ---------------- | ---------------------------------------------------------------------------------------- | --------------------------------------- |
| **Статическая**  | Тип переменной известен **на этапе компиляции**, нельзя присвоить значение другого типа. | `int x = 5; x = "hello"` — ошибка в C++ |
| **Динамическая** | Тип переменной определяется **во время выполнения**, можно менять тип.                   | Python: `x = 5; x = "hello"` — работает |

**Python** — язык **с динамической типизацией**.

```python
x = 10      # int
x = "text"  # теперь str — это нормально в Python
```

***

### **2. Сильная и слабая типизация**

| Типизация   | Описание                                                           | Пример                         |
| ----------- | ------------------------------------------------------------------ | ------------------------------ |
| **Сильная** | Python не позволяет **неявно преобразовывать несовместимые типы**. | `"5" + 5` → ошибка `TypeError` |
| **Слабая**  | Язык позволяет **неявное преобразование типов**.                   | JavaScript: `"5" + 5` → `"55"` |

**Python** — язык с **сильной типизацией**, но динамической.

```python
# Ошибка в Python
x = "5"
y = 2
print(x + y)  # TypeError
```

***

### **3. Явная и неявная типизация (Type Hinting)**

* **Неявная**: Python сам определяет тип переменной.

```python
x = 10       # int
y = "text"   # str
```

* **Явная**: с помощью **аннотаций типов** (`type hints`).

```python
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 полезны для **улучшения читаемости тестов и функций утилит**.
* Проверка типов помогает **избежать ошибок в сложных тестовых сценариях**.

```python
def login(user: str, password: str) -> bool:
    # возвращает True если логин успешен
    ...
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://kaze.gitbook.io/qa-theory/osnovy-programmirovaniya-na-python/dinamicheskaya-i-staticheskaya-silnaya-i-slabaya-yavnaya-i-neyavnaya-tipizacii.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
