You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: ru-docs/Stub_файлы.md
+11-2
Original file line number
Diff line number
Diff line change
@@ -1,4 +1,4 @@
1
-
# Типизация и сторонние библиотеки
1
+
# 3.2 Типизация и сторонние библиотеки
2
2
Работа с типами в Python становится особенно важной, когда вы используете сторонние библиотеки. В этом разделе мы рассмотрим, как эффективно интегрировать типизацию в проекты, использующие внешние зависимости, а также как создавать стаб-файлы для библиотек, которые не предоставляют аннотации типов.
- Сгенерированные файлы будут сохранены в директории `out/`. Однако имейте в виду, что автоматически сгенерированные файлы могут не содержать полной информации о типах и документации.
53
-
-**Использование сторонних проектов**: Существуют проекты, которые предоставляют готовые стаб-файлы для популярных библиотек. Вы можете скачать их и разместить в директории с установленным модулем.
53
+
-**Использование сторонних проектов**: Существуют проекты, которые предоставляют готовые стаб-файлы для популярных библиотек. Вы можете скачать их и разместить в директории с установленным модулем.
Copy file name to clipboardexpand all lines: ru-docs/Базовые_типы_данных.md
+14-5
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,4 @@
1
-
## int, float, str, bool: основы работы с типами
2
-
***
1
+
# 1.2 Базовые типы данных
3
2
Python предлагает следующие базовые типы данных:
4
3
*`int`: Целые числа (например: 10, -5, 0).
5
4
*`float`: Числа с плавающей точкой (например: 3.14, -2.5, 0.0).
@@ -15,7 +14,6 @@ is_active: bool = True
15
14
```
16
15
17
16
## None: отсутствие значения и его особенности
18
-
***
19
17
`None` — специальный тип, который обозначает отсутствие значения.
20
18
```python
21
19
result: None=None
@@ -24,7 +22,6 @@ result: None = None
24
22
Важно понимать, что `None` — не то же самое, что 0, пустая строка или `False`. Это отдельный тип, который указывает на отсутствие какого-либо значения.
25
23
26
24
## Duck typing: неявная типизация в Python
27
-
***
28
25
Python также использует концепцию duck typing. Это неявная типизация, основанная на том, что "если что-то ходит как утка и крякает как утка, то это, вероятно, утка".
29
26
30
27
Другими словами, Python не всегда строго проверяет типы объектов, а смотрит на то, какие методы и атрибуты у них есть. Если объект поддерживает необходимые методы и атрибуты, то он считается подходящим, независимо от его конкретного типа.
В этом примере функция `print_length` принимает любой объект, у которого есть метод `len`. Она не проверяет конкретный тип объекта, что является примером duck typing.
41
38
42
-
**Duck typing** делает Python гибким, но может усложнить отладку кода, так как ошибки типов могут проявиться только во время выполнения. Использование аннотаций типов и статических анализаторов помогает снизить риски, связанные с duck typing, и повысить надежность кода.
39
+
**Duck typing** делает Python гибким, но может усложнить отладку кода, так как ошибки типов могут проявиться только во время выполнения. Использование аннотаций типов и статических анализаторов помогает снизить риски, связанные с duck typing, и повысить надежность кода.
В этом разделе мы рассмотрим, почему типизация важна в Python, когда ее стоит применять и как она реализована в языке.
3
+
4
4
## Динамическая и статическая типизация: плюсы и минусы
5
-
***
6
5
Python — язык с динамической типизацией. Это значит, что тип переменной определяется во время выполнения программы, а не во время написания кода. Такой подход обладает рядом **преимуществ**:
7
6
* Гибкость: Вы можете легко менять типы переменных на лету, не беспокоясь о строгих ограничениях компилятора.
8
7
* Быстрое прототипирование: Динамическая типизация позволяет быстро создавать прототипы, фокусируясь на логике программы, а не на формальностях типов.
@@ -17,21 +16,30 @@ Python — язык с динамической типизацией. Это з
17
16
* Обнаруживать ошибки типов на этапе компиляции: Компилятор или статический анализатор кода проверяет типы, предотвращая ошибки во время выполнения программы.
18
17
* Повысить читаемость кода: Явное указание типов делает код более понятным и легким для восприятия.
19
18
* Упростить рефакторинг: Статическая типизация помогает легче и безопаснее изменять код, так как компилятор или анализатор кода может обнаружить несоответствия типов.
19
+
20
20
## Типизация в Python: история и эволюция
21
-
***
22
21
Python изначально был языком с динамической типизацией. Однако с ростом популярности языка и увеличением размеров проектов разработчики начали испытывать необходимость в статической типизации.
23
22
24
23
В **Python 3.5** были введены аннотации типов: возможность добавлять информацию о типах к переменным, аргументам функций и возвращаемым значениям.
25
24
26
-
>[!warning] Важно!
27
-
>Они никак не влияют на работу программы, но могут использоваться статическими анализаторами кода, например **mypy**.
25
+
>[!WARNING]
26
+
>Они никак не влияют на работу программы, но могут использоваться статическими анализаторами кода, например **mypy**.
28
27
29
28
В Python 3.6 появился новый синтаксис для переменных с объявленными типами. Это позволяет объявлять тип переменной, используя двоеточие и имя типа: `age: int = 25`.
29
+
30
30
## Инструменты для статической типизации: mypy, PyCharm, другие
31
-
***
32
31
Для работы со статической типизацией в Python существует ряд инструментов:
33
32
***mypy**: Самый популярный статический анализатор кода для Python. Он проверяет типы в коде и сообщает об ошибках.
34
33
***PyCharm**: Популярная IDE для Python, которая включает встроенную поддержку статической типизации и интеграцию с mypy.
35
34
* Другие инструменты: Существуют и другие инструменты для статической типизации, например Pyre, Pytype, которые предлагают свои особенности и возможности.
36
35
37
-
В этом курсе мы будем использовать mypy в качестве основного инструмента для статической типизации, так как он является наиболее распространенным и хорошо поддерживаемым инструментом.
36
+
В этом курсе мы будем использовать mypy в качестве основного инструмента для статической типизации, так как он является наиболее распространенным и хорошо поддерживаемым инструментом.
Copy file name to clipboardexpand all lines: ru-docs/Интеграция_mypy.md
+13-2
Original file line number
Diff line number
Diff line change
@@ -1,4 +1,4 @@
1
-
# Интеграция mypy
1
+
# 3.1 Интеграция mypy
2
2
Многие разработчики Python сталкиваются с необходимостью улучшения качества кода и повышения его устойчивости к ошибкам. Одним из эффективных способов достижения этих целей является **статическая типизация**. В данном контексте инструмент mypy становится незаменимым помощником. В этом разделе мы рассмотрим, как интегрировать mypy в ваш рабочий процесс, чтобы обеспечить надежность и понятность вашего кода.
Запустив mypy, вы получите указание на ошибку, что позволит вам быстро посмотреть на функцию и внести необходимые изменения, чтобы гарантировать корректность работы.
53
+
Запустив mypy, вы получите указание на ошибку, что позволит вам быстро посмотреть на функцию и внести необходимые изменения, чтобы гарантировать корректность работы.
Copy file name to clipboardexpand all lines: ru-docs/Классы_и_типизация.md
+14-6
Original file line number
Diff line number
Diff line change
@@ -1,9 +1,7 @@
1
-
## Классы и типизация
2
-
***
1
+
# 1.5 Классы и типизация
3
2
Типизация играет важную роль в объектно-ориентированном программировании на Python. Она позволяет создавать более надежный и понятный код, работая с классами и объектами.
4
3
5
4
## Аннотация типов для атрибутов класса
6
-
***
7
5
Вы можете использовать аннотации типов для определения типов атрибутов класса. Это делает код более читаемым и позволяет статическим анализаторам проверять корректность использования атрибутов.
8
6
```python
9
7
classDog:
@@ -25,7 +23,6 @@ print(my_dog.bark()) # Woof!
25
23
В этом примере мы указываем типы атрибутов `name` (str) и `age` (int) в теле класса.
26
24
27
25
## self и cls: типизация в методах класса
28
-
***
29
26
В методах класса `self` ссылается на текущий экземпляр объекта, а `cls` - на сам класс.
30
27
*`self`: Тип `self` обычно выводится автоматически и не требует явной аннотации.
31
28
*`cls`: Для типизации `cls` используется `Type[T]`, где `T` - это тип класса.
@@ -50,7 +47,6 @@ print(my_animal.name) # Output: Leo
50
47
В этом примере `cls` в методе `create` имеет тип `Type["Animal"]`, что указывает на то, что он ссылается на сам класс `Animal`.
51
48
52
49
## Наследование и типизация
53
-
***
54
50
При наследовании типов важно учитывать, что дочерние классы могут переопределять методы родительских классов. Аннотации типов должны быть совместимы с типами в родительском классе, чтобы избежать ошибок типизации.
55
51
```python
56
52
classAnimal:
@@ -70,4 +66,16 @@ class Cat(Animal):
70
66
71
67
В этом примере метод `speak` в родительском классе `Animal` не имеет реализации (`NotImplementedError`). Дочерние классы `Dog` и `Cat` переопределяют этот метод, предоставляя свою реализацию. Важно, чтобы возвращаемый тип метода `speak` в дочерних классах был совместим с типом, указанным в родительском классе (`str`).
72
68
73
-
Типизация классов и объектов в Python способствует созданию более структурированного, надежного и понятного кода, что особенно важно в крупных проектах.
69
+
Типизация классов и объектов в Python способствует созданию более структурированного, надежного и понятного кода, что особенно важно в крупных проектах.
0 commit comments