Skip to content

Commit 861ff08

Browse files
committed
Design of Markdown files
1 parent 6ab4af1 commit 861ff08

19 files changed

+184
-80
lines changed

README.md

+6-2
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
* Создание универсальных функций и классов
2929
* Ограничение типов с помощью TypeVar
3030
* Практические примеры использования TypeVar
31-
* **[2.2 Типы объединений (Union) и опциональные типы (Optional):](./ru-docs/Типы_объединений_и_опциональные_типы.md)**
31+
* **[2.2 Типы объединений и опциональные типы:](./ru-docs/Типы_объединений_и_опциональные_типы.md)**
3232
* Работа с переменными, которые могут иметь разные типы
3333
* Использование Optional для обозначения возможности отсутствия значения
3434
* **[2.3 Типы псевдонимов:](./ru-docs/Типы_псевдонимов.md)**
@@ -47,4 +47,8 @@
4747
* **[3.2 Stub файлы:](./ru-docs/Stub_файлы.md)**
4848
* Что это такое и зачем нужны?
4949
* Как типизировать сторонние модули
50-
* Генерация stub файлов
50+
* Генерация stub файлов
51+
52+
> [!IMPORTANT]
53+
> Если вам понравился этот курс, и вы подчерпнули из него что-то новое, пожалуйста, поддержите этот репозиторий звёздочкой.
54+
> Мне будет очень приятно :)

eng-docs/assets/back.png

45.4 KB
Loading

eng-docs/assets/main.png

211 KB
Loading

eng-docs/assets/next.png

35.2 KB
Loading

ru-docs/Stub_файлы.md

+11-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Типизация и сторонние библиотеки
1+
# 3.2 Типизация и сторонние библиотеки
22
Работа с типами в Python становится особенно важной, когда вы используете сторонние библиотеки. В этом разделе мы рассмотрим, как эффективно интегрировать типизацию в проекты, использующие внешние зависимости, а также как создавать стаб-файлы для библиотек, которые не предоставляют аннотации типов.
33

44
## Что такое стаб-файлы?
@@ -50,4 +50,13 @@ export MYPYPATH=~/path/to/stubs
5050
pip install -U mypy stubgen -m library_name
5151
```
5252
- Сгенерированные файлы будут сохранены в директории `out/`. Однако имейте в виду, что автоматически сгенерированные файлы могут не содержать полной информации о типах и документации.
53-
- **Использование сторонних проектов**: Существуют проекты, которые предоставляют готовые стаб-файлы для популярных библиотек. Вы можете скачать их и разместить в директории с установленным модулем.
53+
- **Использование сторонних проектов**: Существуют проекты, которые предоставляют готовые стаб-файлы для популярных библиотек. Вы можете скачать их и разместить в директории с установленным модулем.
54+
55+
56+
***
57+
58+
<div align="left">
59+
<a href="./Интеграция_mypy.md">
60+
<img src="./assets/back.png" alt="Назад" style="width: 250px;">
61+
</a>
62+
</div>

ru-docs/assets/back.png

36.1 KB
Loading

ru-docs/assets/main.png

-16.8 KB
Loading

ru-docs/assets/next.png

39.5 KB
Loading

ru-docs/Базовые_типы_данных.md

+14-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
## int, float, str, bool: основы работы с типами
2-
***
1+
# 1.2 Базовые типы данных
32
Python предлагает следующие базовые типы данных:
43
* `int`: Целые числа (например: 10, -5, 0).
54
* `float`: Числа с плавающей точкой (например: 3.14, -2.5, 0.0).
@@ -15,7 +14,6 @@ is_active: bool = True
1514
```
1615

1716
## None: отсутствие значения и его особенности
18-
***
1917
`None` — специальный тип, который обозначает отсутствие значения.
2018
```python
2119
result: None = None
@@ -24,7 +22,6 @@ result: None = None
2422
Важно понимать, что `None` — не то же самое, что 0, пустая строка или `False`. Это отдельный тип, который указывает на отсутствие какого-либо значения.
2523

2624
## Duck typing: неявная типизация в Python
27-
***
2825
Python также использует концепцию duck typing. Это неявная типизация, основанная на том, что "если что-то ходит как утка и крякает как утка, то это, вероятно, утка".
2926

3027
Другими словами, Python не всегда строго проверяет типы объектов, а смотрит на то, какие методы и атрибуты у них есть. Если объект поддерживает необходимые методы и атрибуты, то он считается подходящим, независимо от его конкретного типа.
@@ -39,4 +36,16 @@ print_length([1, 2, 3]) # Вывод: 3
3936

4037
В этом примере функция `print_length` принимает любой объект, у которого есть метод `len`. Она не проверяет конкретный тип объекта, что является примером duck typing.
4138

42-
**Duck typing** делает Python гибким, но может усложнить отладку кода, так как ошибки типов могут проявиться только во время выполнения. Использование аннотаций типов и статических анализаторов помогает снизить риски, связанные с duck typing, и повысить надежность кода.
39+
**Duck typing** делает Python гибким, но может усложнить отладку кода, так как ошибки типов могут проявиться только во время выполнения. Использование аннотаций типов и статических анализаторов помогает снизить риски, связанные с duck typing, и повысить надежность кода.
40+
41+
42+
***
43+
44+
<div align="center">
45+
<a href="./Введение_в_типизацию.md">
46+
<img src="./assets/back.png" alt="Назад" style="width: 250px;">
47+
</a>
48+
<a href="./Коллекции_и_их_типизация.md">
49+
<img src="./assets/next.png" alt="Далее" style="width: 250px;">
50+
</a>
51+
</div>
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
## Введение в типизацию: зачем, когда и как?
2-
***
1+
# 1.1 Введение в типизацию
32
В этом разделе мы рассмотрим, почему типизация важна в Python, когда ее стоит применять и как она реализована в языке.
3+
44
## Динамическая и статическая типизация: плюсы и минусы
5-
***
65
Python — язык с динамической типизацией. Это значит, что тип переменной определяется во время выполнения программы, а не во время написания кода. Такой подход обладает рядом **преимуществ**:
76
* Гибкость: Вы можете легко менять типы переменных на лету, не беспокоясь о строгих ограничениях компилятора.
87
* Быстрое прототипирование: Динамическая типизация позволяет быстро создавать прототипы, фокусируясь на логике программы, а не на формальностях типов.
@@ -17,21 +16,30 @@ Python — язык с динамической типизацией. Это з
1716
* Обнаруживать ошибки типов на этапе компиляции: Компилятор или статический анализатор кода проверяет типы, предотвращая ошибки во время выполнения программы.
1817
* Повысить читаемость кода: Явное указание типов делает код более понятным и легким для восприятия.
1918
* Упростить рефакторинг: Статическая типизация помогает легче и безопаснее изменять код, так как компилятор или анализатор кода может обнаружить несоответствия типов.
19+
2020
## Типизация в Python: история и эволюция
21-
***
2221
Python изначально был языком с динамической типизацией. Однако с ростом популярности языка и увеличением размеров проектов разработчики начали испытывать необходимость в статической типизации.
2322

2423
В **Python 3.5** были введены аннотации типов: возможность добавлять информацию о типах к переменным, аргументам функций и возвращаемым значениям.
2524

26-
>[!warning] Важно!
27-
>Они никак не влияют на работу программы, но могут использоваться статическими анализаторами кода, например **mypy**.
25+
> [!WARNING]
26+
> Они никак не влияют на работу программы, но могут использоваться статическими анализаторами кода, например **mypy**.
2827
2928
В Python 3.6 появился новый синтаксис для переменных с объявленными типами. Это позволяет объявлять тип переменной, используя двоеточие и имя типа: `age: int = 25`.
29+
3030
## Инструменты для статической типизации: mypy, PyCharm, другие
31-
***
3231
Для работы со статической типизацией в Python существует ряд инструментов:
3332
* **mypy**: Самый популярный статический анализатор кода для Python. Он проверяет типы в коде и сообщает об ошибках.
3433
* **PyCharm**: Популярная IDE для Python, которая включает встроенную поддержку статической типизации и интеграцию с mypy.
3534
* Другие инструменты: Существуют и другие инструменты для статической типизации, например Pyre, Pytype, которые предлагают свои особенности и возможности.
3635

37-
В этом курсе мы будем использовать mypy в качестве основного инструмента для статической типизации, так как он является наиболее распространенным и хорошо поддерживаемым инструментом.
36+
В этом курсе мы будем использовать mypy в качестве основного инструмента для статической типизации, так как он является наиболее распространенным и хорошо поддерживаемым инструментом.
37+
38+
***
39+
40+
41+
<div align="right">
42+
<a href="./Базовые_типы_данных.md">
43+
<img src="./assets/next.png" alt="Альтернативный текст" style="width: 250px;">
44+
</a>
45+
</div>

ru-docs/Интеграция_mypy.md

+13-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Интеграция mypy
1+
# 3.1 Интеграция mypy
22
Многие разработчики Python сталкиваются с необходимостью улучшения качества кода и повышения его устойчивости к ошибкам. Одним из эффективных способов достижения этих целей является **статическая типизация**. В данном контексте инструмент mypy становится незаменимым помощником. В этом разделе мы рассмотрим, как интегрировать mypy в ваш рабочий процесс, чтобы обеспечить надежность и понятность вашего кода.
33

44
## Настройка mypy для проверки типов в проекте
@@ -50,4 +50,15 @@ def add_numbers(a: int, b: str) -> int:
5050
return a + b # Ошибка: попытка сложить int и str
5151
```
5252

53-
Запустив mypy, вы получите указание на ошибку, что позволит вам быстро посмотреть на функцию и внести необходимые изменения, чтобы гарантировать корректность работы.
53+
Запустив mypy, вы получите указание на ошибку, что позволит вам быстро посмотреть на функцию и внести необходимые изменения, чтобы гарантировать корректность работы.
54+
55+
***
56+
57+
<div align="center">
58+
<a href="./Типы_протоколов.md">
59+
<img src="./assets/back.png" alt="Назад" style="width: 250px;">
60+
</a>
61+
<a href="./Stub_файлы.md">
62+
<img src="./assets/next.png" alt="Далее" style="width: 250px;">
63+
</a>
64+
</div>

ru-docs/Классы_и_типизация.md

+14-6
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
1-
## Классы и типизация
2-
***
1+
# 1.5 Классы и типизация
32
Типизация играет важную роль в объектно-ориентированном программировании на Python. Она позволяет создавать более надежный и понятный код, работая с классами и объектами.
43

54
## Аннотация типов для атрибутов класса
6-
***
75
Вы можете использовать аннотации типов для определения типов атрибутов класса. Это делает код более читаемым и позволяет статическим анализаторам проверять корректность использования атрибутов.
86
```python
97
class Dog:
@@ -25,7 +23,6 @@ print(my_dog.bark()) # Woof!
2523
В этом примере мы указываем типы атрибутов `name` (str) и `age` (int) в теле класса.
2624

2725
## self и cls: типизация в методах класса
28-
***
2926
В методах класса `self` ссылается на текущий экземпляр объекта, а `cls` - на сам класс.
3027
* `self`: Тип `self` обычно выводится автоматически и не требует явной аннотации.
3128
* `cls`: Для типизации `cls` используется `Type[T]`, где `T` - это тип класса.
@@ -50,7 +47,6 @@ print(my_animal.name) # Output: Leo
5047
В этом примере `cls` в методе `create` имеет тип `Type["Animal"]`, что указывает на то, что он ссылается на сам класс `Animal`.
5148

5249
## Наследование и типизация
53-
***
5450
При наследовании типов важно учитывать, что дочерние классы могут переопределять методы родительских классов. Аннотации типов должны быть совместимы с типами в родительском классе, чтобы избежать ошибок типизации.
5551
```python
5652
class Animal:
@@ -70,4 +66,16 @@ class Cat(Animal):
7066

7167
В этом примере метод `speak` в родительском классе `Animal` не имеет реализации (`NotImplementedError`). Дочерние классы `Dog` и `Cat` переопределяют этот метод, предоставляя свою реализацию. Важно, чтобы возвращаемый тип метода `speak` в дочерних классах был совместим с типом, указанным в родительском классе (`str`).
7268

73-
Типизация классов и объектов в Python способствует созданию более структурированного, надежного и понятного кода, что особенно важно в крупных проектах.
69+
Типизация классов и объектов в Python способствует созданию более структурированного, надежного и понятного кода, что особенно важно в крупных проектах.
70+
71+
72+
***
73+
74+
<div align="center">
75+
<a href="./Функции_и_типизация.md">
76+
<img src="./assets/back.png" alt="Назад" style="width: 250px;">
77+
</a>
78+
<a href="./Типизация_с_использованием_TypeVar.md">
79+
<img src="./assets/next.png" alt="Далее" style="width: 250px;">
80+
</a>
81+
</div>

0 commit comments

Comments
 (0)