Python (или «Питон») – язык общего назначения. Он пользуется огромным спросом среди современных разработчиков. Широко применяется в самых разных областях IT.
Python был создан в качестве средства для упрощения и ускорения обучения/работы программистов в конце 80-х– начале 90-х годов Гвидо ван Россумом. Создатель заложил в основу Python язык ABC, за счет чего Питон легко учился. Со временем ЯП стал широко известен и получил в свое распоряжение множество библиотек, фреймворков и иных инструментов.
Сейчас Python не только стремительно развивается, но и имеет активную поддержку сообщества разработчиков. Это один из наиболее популярных в мире ЯП. Легко изучается как новичками, так и уже более опытными специалистами.
Далее предстоит выяснить, как писать программы на Python. Работы, представленные в статье, – это примеры написания готовых кодов. Образцы, опираясь на которые, пользователи смогут лучше освоить разработку программного обеспечения при помощи Питона. Необходимо не только изучить области применения языка и его наглядные примеры, но и получить базовые навыки в программировании.
Области применения
Python – язык, который встречается в самых разных областях разработки. Чаще всего он встречается в:
- веб-программировании: для формирования веб-приложений и сайтов через фреймворки (Flask, Django);
- анализе данных;
- научных исследованиях для обработки и визуализации данных, организации сложных расчетов;
- искусственном интеллекте и машинном обучении;
- автоматизации задач за счет удобных и продвинутых встроенных инструментов ЯП;
- разработке игрового программного обеспечения, выступая как самостоятельным инструментом, так и дополнительным;
- графическом дизайне и обработке различных изображений – для автоматизации рутинных задач;
- робототехнике.
Питон также подходит для написания десктопных приложений и утилит, драйверов и различных служб.
Особенности
Перед тем как написать программный код на Пайтон, необходимо хорошенько изучить его основы. Каждый разработчик должен помнить следующие особенности языка:
- Наличие простого и понятного синтаксиса. Это приводит к повышению читабельности исходного кода. Текст приложения будет чистым и лаконичным. С ним разберется даже начинающий программист.
- Поддержка активным сообществом разработчиков. Эта особенность обеспечивает языку весьма обширную документацию, разнообразие библиотек, фреймворков, модулей и решений для самых разных задач.
- Пайтон значительно упрощает разработку и отладку за счет программирования с построчной обработкой.
- Поддержка разнообразных платформ и операционных систем. Она обеспечивает гибкость и переносимость готовых приложений.
- Наличие стандартных библиотек и сторонних модулей, используемых для упрощения и ускорения разработки. Большинство программного обеспечения пишется не с нуля.
- Динамическая типизация. Это значит, что переменные могут менять свой тип данных во время исполнения исходного кода.
Работать с Python легко и просто. Он является открытым и свободным средством программирования, что дает возможность его бесплатного использования, распространения и изменения.
Предварительная подготовка
Пайтон требует от начинающих разработчиков небольшой предварительной подготовки. Она заключается в установке ЯП и специализированных инструментов программиста.
Перед тем как писать текст первой утилиты на Python, пользователю потребуется:
- Открыть официальный сайт рассматриваемого языка программирования.
- Перейти в раздел «Downloads» и выбрать версию языка. Последние сборки обычно отображаются на главной странице веб-сервиса.
- Дождаться скачивания дистрибутива для выбранной операционной системы, нажав на соответствующую кнопку на экране.
- Запустить «Мастер установки». Иногда для успешного продолжения инициализации требуются права администратора.
- Следовать подсказкам на экране. Обычно достаточно кликать по «Далее», соглашаться с предлагаемыми правилами и принципами обслуживания, а также указывать пути инициализации. По умолчанию дистрибутив устанавливается в Windows в папку Program Files или по пути /usr/local/bin в Linux и MacOS.
- Открыть командную строку или терминал, ввести python –version. Если язык установлен, в консоли отобразится версия Пайтона.
Старые версии Linux и MacOS были оснащены Питоном заранее. На них ничего устанавливать не требовалось. Для Windows скачивание дистрибутива с официального сайта ЯП всегда являлось обязательным.
Основы программирования
Чтобы сделать собственную программу и записать ее код, одного установленного Пайтона будет недостаточно. Разработчик должен сначала изучить основные (базовые) элементы ЯП. Далее будет представлена информация, которая позволит начать работать с Python с нуля максимально комфортно.
Ключевые слова
Даже самая маленькая программа на Питоне будет иметь ключевые слова. Это зарезервированные синтаксисом языка слова. Они используются для реализации функций и инструментов.
При написании приложений разработчики будут создавать собственные ключевые слова. Они называются переменными (variables). Подбор правильного имени переменной – достаточно простая задача. Главное не использовать ранее зарезервированные синтаксисом слова.
Выше можно увидеть список актуальных для Пайтона ключевых слов. Основной упор при обучении у новичков делается на возможности приложений (исходного кода) «разговаривать». Для этого используется команда print.
Если написать пример кода, представленный выше, в консоли после его обработки появится запись «Hello, world!» (без кавычек). Предложение здесь начинается с print, которое воспринимается системой как команда «печать» или «вывод». Далее следует строка текста в кавычках, заключенная предварительно в скобки. Это запись, которую будет обрабатывать и выводить print.
Типизация и значения
Любая программа, написанная на Питоне, работает с разнообразными значениями. Они обозначаются как values и являются базовыми элементами. Значениями называются данные, которыми оперирует программное обеспечение. Вот несколько примеров:
- цифры: 2, 5, 8, 91;
- текст – строка «Hello, World!»
Значения относятся к разным типам данных. У рассматриваемого средства разработки поддерживается динамическая типизация. Она позволяет приложению «понимать», какие значения и типы данных использует исходный код, а затем обрабатывать соответствующие элементы должным образом.
Print умеет работать с самыми разными значениями. Пример – с числовыми. При записи print (5) в консоли появится число 5. Изучаемый ЯП умеет работать с такими типами данных как:
- Int – целые числа. Используются для хранения любых чисел. Сюда относятся все положительные и отрицательные числа, а также ноль. Они используются при счете.
- Float – вещественные числа. Это значения с дробной частью, которая отделяется запятой.
- Str (String) – строки. Включают в себя любые символьные наборы, заключенные в двойных или одинарных кавычках. Разницы между ними нет. Главное – использовать при написании кода один и тот же тип кавычек.
- List – списки. Тип данных, который включает в себя некоторые последовательности.
- Bool – логические значения. Они встречаются только двух типов: истина (true) и ложь (false). В основном используются в циклах и при решении математических задач.
Эта информация поможет создать первый грамотный проект, который будет работать максимально эффективно. Если разработчик неправильно задает тип данных, в приложениях со строгой типизацией могут возникнуть серьезные проблемы.
Переменные
У Python имеется возможность манипулирования переменными. Так называется именованная ячейка памяти, которая выделяется для работы в программе. Она хранит в себе некоторые данные, доступные для вывода через print. Переменная будет ссылаться на определенное значение в памяти. С такими элементами работает абсолютно любая программа – даже самая маленькая.
Чтобы использовать переменную в исходном коде, ей сначала необходимо присвоить то или иной значение. Доступ к нему осуществляется через имя переменной. Для присваивания значения используется так называемая «инструкция присваивания». Она обозначается как знак равенства (=).
Выше – готовый код для проверки принципов работы с рассматриваемым элементом разработки. В консоли появится характерное сообщение об ошибке. Оно укажет на неправильный синтаксис, используемый в коде.
Такое поведение связано с тем, что разработчик попытался использовать зарезервированное слово class для имени переменных. Это невозможно. Как только язык увидит ключевое слово, он будет обрабатывать его особым образом, а не как «название» для классов и иных элементов будущего приложения. Из-за этого возникает характерное сообщение о синтаксической ошибке.
Значения переменных можно вывести на экран через функцию print:
Выше – пример того, как выглядит команда print в Python при выводе переменных на экран. Можно использовать type для отображения data type. В Python этот момент зависит от того, на данные какого типа будет ссылаться переменная.
Выше – образец того, как выглядит простой способ получения информации о data types для переменных.
Присваивание имен
В Python и других языках программирования необходимо грамотно присваивать имена переменным, классам и другим объектам. Рекомендуется придерживаться следующих принципов:
- Нельзя использовать в именах ключевые слова.
- Имена объектов исходного кода должны однозначно «документировать элемент». Это значит, что «названия» должны хорошо и понятно характеризовать то, для чего они используются или что описывают.
- Имя может быть сколь угодно длинным, но включать в себя оно может буквы и цифры.
- Имена не могут начинаться с цифр.
- Негласное синтаксическое правило, которое подойдет для начинающих, – использование заглавных букв для разделения слов (в сложных названиях).
- Не рекомендуется пользоваться заглавными буквами для односложных переменных. Они больше подходят для классов и методов.
- Более опытные разработчики могут разделять слова в именах при помощи нижнего подчеркивания. С него же могут начинаться названия переменных в Python, но такие элементы имеют специальное предназначение.
Все эти простые правила помогут сделать программу на Python не только рабочей, но и читабельной.
Инструкции
Инструкции – части кода, которые могут быть выполнены рассматриваемым языком. Они не выводятся через print. Все приложение представляет собой некоторую последовательность инструкций.
Соответствующие команды выполняются друг за другом. Это происходит до тех пор, пока все инструкции в исходном документе не будут выполнены. Python считывает инструкции сверху–вниз.
Print – это маленькая инструкция. Присваивание значений объектам исходного кода – тоже. Инструкции выполняются за счет вычислений выражений одного за другим. После этого система применит необходимые операции (среди которых встречается print) к соответствующим выражениям.
Выражения
Выражения (expressions) – комбинации значений, переменных и операторов. В языках разработки значение – это само по себе выражение.
Если записывать предложенный выше фрагмент в интерактивном режиме, система вычислит значения выражений и выведет их в консоль в виде результата. Никакие команды вроде print не потребуются. Сами по себе выражения в исходном коде программы ничего не делают.
Вызов функции – это тоже выражение.
Операторы и операнды
Чтобы сделать программу, необходимо усвоить, что собой представляют операторы и операнды. Оператор – это объект, который умеет управлять разнообразными операндами при помощи вычислений. Операнд – объект, которым можно манипулировать через операторы или значения, к которым применяются операторы.
Выше – пример того, как выглядит список арифметических операторов. Они помогают получать корректные решения математических задач. Разные ЯП могут использовать различные принципы работы одних и тех же операторов. Пример – в C результатом деления целого числа на целое станет целочисленный «параметр». При возникновении остатка система отбросит его и округлит результат до меньшего целого. Для вывода результата используется не print, а printf:
Для получения корректного ответа необходимо использовать тип float.:
У Питона результат деления целого числа на целое – это число с плавающей точкой:
В предложенном примере print использовать не нужно. Чтобы система повела себя подобно C, необходимо воспользоваться оператором целочисленного деления:
Порядок расчетов примерно такой: выражения в скобках, возведение в степень, умножение, деление, модуль, сложение, вычитание. Если операторы имеют одинаковый приоритет (умножение/деление/модуль, сложение/вычитание), они будут выполняться слева-направо.
Условный оператор
Изучая примеры программ на Python, требуется обратить внимание на условные операторы. Они часто используются в циклах и обеспечивают ветвление:
- If – основной условный оператор. Используется для того, чтобы проверить условие и выполнение фрагмента программы. Функция реализовывается, если условие является истиной.
- If-else – применяется, когда нужно выбрать действие из двух возможных. Если значение выражения после if является истиной, выполняется одна операция. В противном случае – то, что написано после else.
- If-elif-else. Сложное ветвление. Дает возможность выбрать алгоритм действий из нескольких предложенных. Система будет проверять каждый блок elseif, пока не найдет true-значение. Если оно не обнаружено, выполнится блок else.
Условные конструкции в Python используются как новичками, так и более опытными разработчиками.
Консольный ввод
В некоторых приложениях можно писать различные данные и информацию. Для вывода сведений в консоль используется print. Для консольного ввода у рассматриваемого ЯП используется встроенная функция – input. Она работает иначе, чем print. При обработке input система остановит выполнение исходного кода и будет ждать пользовательского ввода. Как только информация будет введена, а клиент нажмет на Enter, приложение продолжит работать.
Для работы со входными данными требуется их сохранение. Это делается через переменные:
Input и print не исключают друг друга. Они могут использоваться совместно для выполнения некоторых команд и операций.
Циклы
Еще одним важным элементом разработки служат циклы. Они могут называться «петлями». С их помощью можно организовывать повторение определенных фрагментов кода. Пример – print (печать в консоли).
Циклы используются для автоматизации повторяющихся задач. В рассматриваемом ЯП используются различные виды «петель»:
Результаты обработки могут выводиться через print в консоль. От них иногда строится ветвление исходного приложения (выбор последующего алгоритма действий).
While
While – простой и понятный цикл. Он называется циклом с предусловием:
Здесь print срабатывает после выполнения условия «Пока x меньше 5, печатать x и после – прибавлять в нему единицу». Неправильное или нелогичное условие while обеспечит бесконечный цикл.
Для остановки цикла используются команды break и continue.
For
For – более распространенный вариант цикла в Python и других языках. Для него устанавливается не условие в чистом виде, а массив информации. При каждой итерации система будет уточнять, есть ли в объекте элементы, по которым еще не осуществлялся проход. For тоже может использоваться с print.
В предложенном фрагменте:
- Переменная number обновляется при каждой итерации.
- Сначала number включает в себя первый элемент. Он выводится через print.
- Далее, на второй итерации, значение будет равно второму элементу.
- Операция повторяется до конца списка.
Используемую переменную можно назвать любым именем.
Наглядные примеры
Основы разработки на Пайтоне уже рассмотрены. Теперь можно изучить несколько интересных примеров приложений.
Заряд аккумулятора
Проверить заряд аккумулятора на устройстве помогает встроенный модуль psutil. Он включен в стандартную Питон-библиотеку и не требует предварительной инициализации:
Программу можно улучшить при помощи добавления уведомления о низком заряде. Для этого используется модуль pyautogui. Он может быть загружен через pip install:
Здесь можно заметить использование циклов.
Текст в голос
Преобразование text в голос на PY можно за счет библиотеки gTTS. Она не включена в стандартную библиотеку и устанавливается за счет pip:
Кроме преобразования текста в голос, здесь используется сохранение полученного результата.
Генерирование пароля
А вот небольшая утилита на Python, которая поможет сгенерировать разнообразные пароли:
Для ее функционирования достаточно воспользоваться модулем из стандартной библиотеки языка. Он называется random и позволяет случайным образом генерировать информацию.
Конвертер
Преобразования одних документов в другие – распространенная операция. На рассматриваемом ЯП получится написать собственный конвертер. Ниже – пример, помогающий перезаписывать PNG в ICO:
Здесь з��действован модуль Pillow. Он не включен в стандартную библиотеку. Требует предварительной установки за счет команды pip install Pillow. Только после этого можно задействовать инструмент в разработке.
Интересует Python? Добро пожаловать на курс в Otus!
<!DOCTYPE html>
<html dir="ltr" lang="ru-RU">
<head>
<meta charset="UTF-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="profile" href="http://gmpg.org/xfn/11" />
<title>Основы разработки на Python OTUS</title>
<!-- All in One SEO 4.5.2.1 - aioseo.com -->
<meta name="description" content="Python (или «Питон») – язык общего назначения. Он пользуется огромным спросом среди современных разработчиков. Широко применяется в самых разных областях IT. Python был создан в качестве средства для упрощения и ускорения обучения/работы программистов в конце 80-х– начале 90-х годов Гвидо ван Россумом. Создатель заложил в основу Python язык ABC, за счет чего Питон легко учился." />
<meta name="robots" content="max-image-preview:large" />
<link rel="canonical" href="https://otus.ru/journal/osnovy-razrabotki-na-python/" />
<meta name="generator" content="All in One SEO (AIOSEO) 4.5.2.1" />
<script type="application/ld+json" class="aioseo-schema">
{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/otus.ru\/journal\/osnovy-razrabotki-na-python\/#article","name":"\u041e\u0441\u043d\u043e\u0432\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430 Python OTUS","headline":"\u041e\u0441\u043d\u043e\u0432\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430 Python","author":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"publisher":{"@id":"https:\/\/otus.ru\/journal\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2023\/11\/oj-1080x72015-1.jpg","width":2245,"height":1587},"datePublished":"2023-11-09T18:07:27+00:00","dateModified":"2023-12-19T19:23:09+00:00","inLanguage":"ru-RU","mainEntityOfPage":{"@id":"https:\/\/otus.ru\/journal\/osnovy-razrabotki-na-python\/#webpage"},"isPartOf":{"@id":"https:\/\/otus.ru\/journal\/osnovy-razrabotki-na-python\/#webpage"},"articleSection":"\u041f\u043e\u043b\u0435\u0437\u043d\u043e\u0435, Python"},{"@type":"BreadcrumbList","@id":"https:\/\/otus.ru\/journal\/osnovy-razrabotki-na-python\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/#listItem","position":1,"name":"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430","item":"https:\/\/otus.ru\/journal\/","nextItem":"https:\/\/otus.ru\/journal\/osnovy-razrabotki-na-python\/#listItem"},{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/osnovy-razrabotki-na-python\/#listItem","position":2,"name":"\u041e\u0441\u043d\u043e\u0432\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430 Python","previousItem":"https:\/\/otus.ru\/journal\/#listItem"}]},{"@type":"Organization","@id":"https:\/\/otus.ru\/journal\/#organization","name":"\u041e\u0442\u0443\u0441 \u043e\u043d\u043b\u0430\u0439\u043d-\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435","url":"https:\/\/otus.ru\/journal\/","sameAs":["https:\/\/www.youtube.com\/channel\/UCetgtvy93o3i3CvyGXKFU3g"],"contactPoint":{"@type":"ContactPoint","telephone":"+74999389202","contactType":"Customer Support"}},{"@type":"Person","@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author","url":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/","name":"A. Pavlenko","image":{"@type":"ImageObject","@id":"https:\/\/otus.ru\/journal\/osnovy-razrabotki-na-python\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/d4c499a104d7c2522fa41f89e6819499?s=96&d=mm&r=g","width":96,"height":96,"caption":"A. Pavlenko"}},{"@type":"WebPage","@id":"https:\/\/otus.ru\/journal\/osnovy-razrabotki-na-python\/#webpage","url":"https:\/\/otus.ru\/journal\/osnovy-razrabotki-na-python\/","name":"\u041e\u0441\u043d\u043e\u0432\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430 Python OTUS","description":"Python (\u0438\u043b\u0438 \u00ab\u041f\u0438\u0442\u043e\u043d\u00bb) \u2013 \u044f\u0437\u044b\u043a \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u041e\u043d \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u043c \u0441\u043f\u0440\u043e\u0441\u043e\u043c \u0441\u0440\u0435\u0434\u0438 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u0428\u0438\u0440\u043e\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u043e\u0431\u043b\u0430\u0441\u0442\u044f\u0445 IT. Python \u0431\u044b\u043b \u0441\u043e\u0437\u0434\u0430\u043d \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0434\u043b\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u0438 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f\/\u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432 \u0432 \u043a\u043e\u043d\u0446\u0435 80-\u0445\u2013 \u043d\u0430\u0447\u0430\u043b\u0435 90-\u0445 \u0433\u043e\u0434\u043e\u0432 \u0413\u0432\u0438\u0434\u043e \u0432\u0430\u043d \u0420\u043e\u0441\u0441\u0443\u043c\u043e\u043c. \u0421\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u043b\u043e\u0436\u0438\u043b \u0432 \u043e\u0441\u043d\u043e\u0432\u0443 Python \u044f\u0437\u044b\u043a ABC, \u0437\u0430 \u0441\u0447\u0435\u0442 \u0447\u0435\u0433\u043e \u041f\u0438\u0442\u043e\u043d \u043b\u0435\u0433\u043a\u043e \u0443\u0447\u0438\u043b\u0441\u044f.","inLanguage":"ru-RU","isPartOf":{"@id":"https:\/\/otus.ru\/journal\/#website"},"breadcrumb":{"@id":"https:\/\/otus.ru\/journal\/osnovy-razrabotki-na-python\/#breadcrumblist"},"author":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"creator":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2023\/11\/oj-1080x72015-1.jpg","@id":"https:\/\/otus.ru\/journal\/osnovy-razrabotki-na-python\/#mainImage","width":2245,"height":1587},"primaryImageOfPage":{"@id":"https:\/\/otus.ru\/journal\/osnovy-razrabotki-na-python\/#mainImage"},"datePublished":"2023-11-09T18:07:27+00:00","dateModified":"2023-12-19T19:23:09+00:00"},{"@type":"WebSite","@id":"https:\/\/otus.ru\/journal\/#website","url":"https:\/\/otus.ru\/journal\/","name":"OTUS JOURNAL","description":"Blog about IT","inLanguage":"ru-RU","publisher":{"@id":"https:\/\/otus.ru\/journal\/#organization"}}]}
</script>
<!-- All in One SEO -->
<link rel='dns-prefetch' href='//otus.ru' />
<link rel='dns-prefetch' href='//fonts.googleapis.com' />
<link rel='stylesheet' id='wp-block-library-css' href='https://otus.ru/journal/wp-includes/css/dist/block-library/style.min.css?ver=6.4.7' type='text/css' media='all' />
<style id='classic-theme-styles-inline-css' type='text/css'>
/*! This file is auto-generated */
.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
</style>
<style id='global-styles-inline-css' type='text/css'>
body{--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
.wp-block-navigation a:where(:not(.wp-element-button)){color: inherit;}
:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
.wp-block-pullquote{font-size: 1.5em;line-height: 1.6;}
</style>
<link rel='stylesheet' id='wbcr-comments-plus-url-span-css' href='https://otus.ru/journal/wp-content/plugins/clearfy/components/comments-plus/assets/css/url-span.css?ver=2.2.0' type='text/css' media='all' />
<link rel='stylesheet' id='wpel-style-css' href='https://otus.ru/journal/wp-content/plugins/wp-external-links/public/css/wpel.css?ver=2.59' type='text/css' media='all' />
<link rel='stylesheet' id='ez-toc-css' href='https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/css/screen.min.css?ver=2.0.61' type='text/css' media='all' />
<style id='ez-toc-inline-css' type='text/css'>
div#ez-toc-container .ez-toc-title {font-size: 120%;}div#ez-toc-container .ez-toc-title {font-weight: 500;}div#ez-toc-container ul li {font-size: 95%;}div#ez-toc-container nav ul ul li {font-size: 90%;}
.ez-toc-container-direction {direction: ltr;}.ez-toc-counter ul{counter-reset: item ;}.ez-toc-counter nav ul li a::before {content: counters(item, ".", decimal) ". ";display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }.ez-toc-widget-direction {direction: ltr;}.ez-toc-widget-container ul{counter-reset: item ;}.ez-toc-widget-container nav ul li a::before {content: counters(item, ".", decimal) ". ";display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }
</style>
<link rel='stylesheet' id='contentberg-fonts-css' href='https://fonts.googleapis.com/css?family=Roboto%3A400%2C500%2C700%7CPT+Serif%3A400%2C400i%2C600%7CIBM+Plex+Serif%3A500' type='text/css' media='all' />
<link rel='stylesheet' id='contentberg-core-css' href='https://otus.ru/journal/wp-content/themes/contentberg/style.css?ver=1.8.3' type='text/css' media='all' />
<link rel='stylesheet' id='contentberg-lightbox-css' href='https://otus.ru/journal/wp-content/themes/contentberg/css/lightbox.css?ver=1.8.3' type='text/css' media='all' />
<link rel='stylesheet' id='font-awesome-css' href='https://otus.ru/journal/wp-content/themes/contentberg/css/fontawesome/css/font-awesome.min.css?ver=1.8.3' type='text/css' media='all' />
<script type="text/javascript" id="breeze-prefetch-js-extra">
/* <![CDATA[ */
var breeze_prefetch = {"local_url":"https:\/\/otus.ru\/journal","ignore_remote_prefetch":"1","ignore_list":["\/wp-admin\/"]};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/breeze/assets/js/js-front-end/breeze-prefetch-links.min.js" id="breeze-prefetch-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery.min.js" id="jquery-core-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery-migrate.min.js" id="jquery-migrate-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/lazysizes.js" id="lazysizes-js"></script>
<link rel="https://api.w.org/" href="https://otus.ru/journal/wp-json/" /><link rel="alternate" type="application/json" href="https://otus.ru/journal/wp-json/wp/v2/posts/7927" /><link rel='shortlink' href='https://otus.ru/journal/?p=7927' />
<link rel="alternate" type="application/json+oembed" href="https://otus.ru/journal/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fosnovy-razrabotki-na-python%2F" />
<link rel="alternate" type="text/xml+oembed" href="https://otus.ru/journal/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fosnovy-razrabotki-na-python%2F&format=xml" />
<script>var Sphere_Plugin = {"ajaxurl":"https:\/\/otus.ru\/journal\/wp-admin\/admin-ajax.php"};</script><link rel="icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-32x32.png" sizes="32x32" />
<link rel="icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-192x192.png" sizes="192x192" />
<link rel="apple-touch-icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-180x180.png" />
<meta name="msapplication-TileImage" content="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-270x270.png" />
<style type="text/css" id="wp-custom-css">
#menu-item-10406 .wpel-icon {
display: none;
}
#menu-item-10407 .wpel-icon {
display: none;
}
.otus-login-site a .wpel-icon {
display: none;
}
.menu-menju-navykov-container a .wpel-icon {
display: none;
}
.otus-login-site a
{
background: #ffd709;
border-radius: 12px;
color: #0f0f10;
font-size: 14px;
font-weight: 700;
line-height: 20px;
display: block;
text-align: center;
padding: 8px 25px;
}
.main-footer.dark {
background: linear-gradient(90deg, #a64fc5, #4f54e6);
border-color: transparent;
}
.main-footer.bold .copyright {
color: #fff;
}
.main-footer.bold .to-top i {
color: #fff;
}
.main-footer.bold .back-to-top {
color: #fff;
}
.nav__scroll {
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.scrollable-menu .menu {
display: flex;
}
.nav__scroll
{
background: linear-gradient(90deg, #a64fc5, #4f54e6);
}
.scrollable-menu .menu .menu-item {
flex: 0 0 auto;
padding: 15px 15px;
}
.scrollable-menu .menu .menu-item a {
color: #fff;
}
.nav__scroll::-webkit-scrollbar{background-color:#fff;height:5px;}
.nav__scroll::-webkit-scrollbar-thumb{background-color:#dcdcdc;}
.nav__scroll::-webkit-scrollbar-track{-webkit-border-radius:0;border-radius:0;background-color:#fff;}/
body {
min-width: 320px;
}
.banner-click img {
margin: 0 auto;
display: block;
}
.banner-click {
cursor: pointer;
}
.banner-footer-area {
margin-bottom: 20px;
}
.banner-left-area {
margin-top: 40px;
} </style>
<!--Start VDZ Yandex Metrika Plugin-->
<!-- Yandex.Metrika counter --><script type="text/javascript" >(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");ym(34531570, "init", {clickmap:true, trackLinks:true, accurateTrackBounce:true, webvisor:true, trackHash:true, ecommerce:"dataLayer"});</script>
<noscript><div><img src="https://mc.yandex.ru/watch/34531570" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter --><!--START ADD EVENTS FROM CF7--><script type='text/javascript'>document.addEventListener( 'wpcf7submit', function( event ) {
//event.detail.contactFormId;
if(ym){
//console.log(event.detail);
ym(34531570, 'reachGoal', 'VDZ_SEND_CONTACT_FORM_7');
ym(34531570, 'params', {
page_url: window.location.href,
status: event.detail.status,
locale: event.detail.contactFormLocale,
form_id: event.detail.contactFormId,
});
}
}, false );
</script><!--END ADD EVENTS FROM CF7-->
<!--End VDZ Yandex Metrika Plugin-->
</head>
<body class="post-template-default single single-post postid-7927 single-format-standard right-sidebar lazy-normal has-lb">
<div class="main-wrap">
<header id="main-head" class="main-head head-nav-below has-search-modal simple simple-boxed">
<div class="inner inner-head" data-sticky-bar="0">
<div class="wrap cf wrap-head">
<div class="left-contain">
<span class="mobile-nav"><i class="fa fa-bars"></i></span>
<div class="title">
<a href="https://otus.ru/journal/" title="OTUS JOURNAL" rel="home" data-wpel-link="internal">
<span class="text-logo"><img src="/journal/wp-content/themes/contentberg/img/logo_site.svg" alt="OTUS JOURNAL"></span>
</a>
</div>
</div>
<div class="navigation-wrap inline">
<nav class="navigation inline simple light" data-sticky-bar="0">
<div class="menu-rubriki-container"><ul id="menu-rubriki" class="menu"><li id="menu-item-109" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-cat-1 menu-item-109"><a href="https://otus.ru/journal/category/pro-it/" data-wpel-link="internal"><span>Про IT</span></a></li>
<li id="menu-item-113" class="menu-item menu-item-type-taxonomy menu-item-object-category current-post-ancestor current-menu-parent current-post-parent menu-cat-4 menu-item-113"><a href="https://otus.ru/journal/category/polza/" data-wpel-link="internal"><span>Полезное</span></a></li>
<li id="menu-item-114" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-cat-3 menu-item-114"><a href="https://otus.ru/journal/category/lifestyle/" data-wpel-link="internal"><span>Лайфстайл</span></a></li>
<li id="menu-item-10406" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10406"><a href="https://otus.ru/catalog/courses" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right"><span>Обучение</span><span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10407" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10407"><a href="https://otus.ru/about" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right"><span>Информация</span><span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </nav>
</div>
<div class="actions">
<div class="otus-login-site">
<a href="https://otus.ru/login/" target="_blank" data-wpel-link="external" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Войти<span class="wpel-icon wpel-image wpel-icon-6"></span></a>
</div>
<a href="#" title="Search" class="search-link"><i class="fa fa-search"></i></a>
</div>
</div>
</div>
</header> <!-- .main-head -->
<div class="nav nav_disable nav_colored nav_transparent course-categories__nav nav__scroll ">
<div class="container wrap">
<div class="links inline simple light scrollable-menu">
<div class="menu-menju-navykov-container"><ul id="menu-menju-navykov" class="menu"><li id="menu-item-10413" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10413"><a href="https://otus.ru/categories/programming/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Программирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10414" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10414"><a href="https://otus.ru/categories/architecture/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Архитектура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10415" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10415"><a href="https://otus.ru/categories/operations/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Инфраструктура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10416" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10416"><a href="https://otus.ru/categories/information-security-courses/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Безопасность<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10417" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10417"><a href="https://otus.ru/categories/data-science/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Data Science<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10418" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10418"><a href="https://otus.ru/categories/gamedev/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">GameDev<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10419" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10419"><a href="https://otus.ru/categories/marketing-business/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Управление<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10420" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10420"><a href="https://otus.ru/categories/analytics/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Аналитика и анализ<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10421" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10421"><a href="https://otus.ru/categories/testing/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Тестирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </div>
</div>
</div>
<div class="main wrap">
<div class="ts-row cf">
<div class="col-8 main-content cf">
<article id="post-7927" class="the-post post-7927 post type-post status-publish format-standard has-post-thumbnail category-polza tag-python">
<header class="post-header the-post-header cf">
<div class="post-meta the-post-meta">
<span class="post-cat">
<a href="https://otus.ru/journal/category/polza/" class="category" data-wpel-link="internal">Полезное</a>
</span>
<h1 class="post-title">
Основы разработки на Python
</h1>
<a href="https://otus.ru/journal/osnovy-razrabotki-na-python/" class="date-link" data-wpel-link="internal"><time class="post-date">9 ноября, 2023</time></a>
</div>
<div class="featured">
<a href="https://otus.ru/journal/wp-content/uploads/2023/11/oj-1080x72015-1.jpg" class="image-link" data-wpel-link="internal"><img width="770" height="515" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20770%20515%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-contentberg-main size-contentberg-main lazyload wp-post-image" alt="Основы разработки на Python" title="Основы разработки на Python" decoding="async" fetchpriority="high" data-srcset="https://otus.ru/journal/wp-content/uploads/2023/11/oj-1080x72015-1-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2023/11/oj-1080x72015-1-270x180.jpg 270w" data-src="https://otus.ru/journal/wp-content/uploads/2023/11/oj-1080x72015-1-770x515.jpg" data-sizes="(max-width: 770px) 100vw, 770px" /> </a>
</div>
</header><!-- .post-header -->
<div class="post-content description cf entry-content content-normal">
<div id="ez-toc-container" class="ez-toc-v2_0_61 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction">
<div class="ez-toc-title-container">
<p class="ez-toc-title " >Содержание</p>
<span class="ez-toc-title-toggle"><a href="#" class="ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle" aria-label="Toggle Table of Content"><span class="ez-toc-js-icon-con"><span class=""><span class="eztoc-hide" style="display:none;">Toggle</span><span class="ez-toc-icon-toggle-span"><svg style="fill: #999;color:#999" xmlns="http://www.w3.org/2000/svg" class="list-377408" width="20px" height="20px" viewBox="0 0 24 24" fill="none"><path d="M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z" fill="currentColor"></path></svg><svg style="fill: #999;color:#999" class="arrow-unsorted-368013" xmlns="http://www.w3.org/2000/svg" width="10px" height="10px" viewBox="0 0 24 24" version="1.2" baseProfile="tiny"><path d="M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z"/></svg></span></span></span></a></span></div>
<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-1" href="#%D0%9E%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D0%B8_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F" title="Области применения">Области применения</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-2" href="#%D0%9E%D1%81%D0%BE%D0%B1%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8" title="Особенности">Особенности</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-3" href="#%D0%9F%D1%80%D0%B5%D0%B4%D0%B2%D0%B0%D1%80%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BF%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0" title="Предварительная подготовка">Предварительная подготовка</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-4" href="#%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F" title="Основы программирования">Основы программирования</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-5" href="#%D0%9A%D0%BB%D1%8E%D1%87%D0%B5%D0%B2%D1%8B%D0%B5_%D1%81%D0%BB%D0%BE%D0%B2%D0%B0" title="Ключевые слова">Ключевые слова</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-6" href="#%D0%A2%D0%B8%D0%BF%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%B8_%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F" title="Типизация и значения">Типизация и значения</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-7" href="#%D0%9F%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5" title="Переменные">Переменные</a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-8" href="#%D0%9F%D1%80%D0%B8%D1%81%D0%B2%D0%B0%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%BC%D0%B5%D0%BD" title="Присваивание имен">Присваивание имен</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-9" href="#%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8" title="Инструкции">Инструкции</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-10" href="#%D0%92%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F" title="Выражения">Выражения</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-11" href="#%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D1%8B_%D0%B8_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D0%BD%D0%B4%D1%8B" title="Операторы и операнды">Операторы и операнды</a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-12" href="#%D0%A3%D1%81%D0%BB%D0%BE%D0%B2%D0%BD%D1%8B%D0%B9_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80" title="Условный оператор">Условный оператор</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-13" href="#%D0%9A%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%B2%D0%B2%D0%BE%D0%B4" title="Консольный ввод">Консольный ввод</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-14" href="#%D0%A6%D0%B8%D0%BA%D0%BB%D1%8B" title="Циклы">Циклы</a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-15" href="#While" title="While">While</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-16" href="#For" title="For">For</a></li></ul></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-17" href="#%D0%9D%D0%B0%D0%B3%D0%BB%D1%8F%D0%B4%D0%BD%D1%8B%D0%B5_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B" title="Наглядные примеры">Наглядные примеры</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-18" href="#%D0%97%D0%B0%D1%80%D1%8F%D0%B4_%D0%B0%D0%BA%D0%BA%D1%83%D0%BC%D1%83%D0%BB%D1%8F%D1%82%D0%BE%D1%80%D0%B0" title="Заряд аккумулятора">Заряд аккумулятора</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-19" href="#%D0%A2%D0%B5%D0%BA%D1%81%D1%82_%D0%B2_%D0%B3%D0%BE%D0%BB%D0%BE%D1%81" title="Текст в голос">Текст в голос</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-20" href="#%D0%93%D0%B5%D0%BD%D0%B5%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B0%D1%80%D0%BE%D0%BB%D1%8F" title="Генерирование пароля">Генерирование пароля</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-21" href="#%D0%9A%D0%BE%D0%BD%D0%B2%D0%B5%D1%80%D1%82%D0%B5%D1%80" title="Конвертер">Конвертер</a></li></ul></li></ul></nav></div>
<p>Python (или «Питон») – язык общего назначения. Он пользуется огромным спросом среди современных разработчиков. Широко применяется в самых разных областях IT.</p>
<p>Python был создан в качестве средства для упрощения и ускорения обучения/работы программистов в конце 80-х– начале 90-х годов Гвидо ван Россумом. Создатель заложил в основу Python язык ABC, за счет чего Питон легко учился. Со временем ЯП стал широко известен и получил в свое распоряжение множество библиотек, фреймворков и иных инструментов. </p>
<p>Сейчас Python не только стремительно развивается, но и имеет активную поддержку сообщества разработчиков. Это один из наиболее популярных в мире ЯП. Легко изучается как новичками, так и уже более опытными специалистами.</p>
<p>Далее предстоит выяснить, как писать программы на Python. Работы, представленные в статье, – это примеры написания готовых кодов. Образцы, опираясь на которые, пользователи смогут лучше освоить разработку программного обеспечения при помощи Питона. Необходимо не только изучить области применения языка и его наглядные примеры, но и получить базовые навыки в программировании.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9E%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D0%B8_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F"></span>Области применения<span class="ez-toc-section-end"></span></h2>
<p>Python – язык, который встречается в самых разных областях разработки. Чаще всего он встречается в:</p>
<ul>
<li>веб-программировании: для формирования веб-приложений и сайтов через фреймворки (Flask, Django);</li>
<li>анализе данных;</li>
<li>научных исследованиях для обработки и визуализации данных, организации сложных расчетов;</li>
<li>искусственном интеллекте и машинном обучении;</li>
<li>автоматизации задач за счет удобных и продвинутых встроенных инструментов ЯП;</li>
<li>разработке игрового программного обеспечения, выступая как самостоятельным инструментом, так и дополнительным;</li>
<li>графическом дизайне и обработке различных изображений – для автоматизации рутинных задач;</li>
<li>робототехнике.</li>
</ul>
<p>Питон также подходит для написания десктопных приложений и утилит, драйверов и различных служб.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9E%D1%81%D0%BE%D0%B1%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8"></span>Особенности<span class="ez-toc-section-end"></span></h2>
<p>Перед тем как написать программный код на Пайтон, необходимо хорошенько изучить его основы. Каждый разработчик должен помнить следующие особенности языка:</p>
<ol>
<li>Наличие простого и понятного синтаксиса. Это приводит к повышению читабельности исходного кода. Текст приложения будет чистым и лаконичным. С ним разберется даже начинающий программист.</li>
<li>Поддержка активным сообществом разработчиков. Эта особенность обеспечивает языку весьма обширную документацию, разнообразие библиотек, фреймворков, модулей и решений для самых разных задач.</li>
<li>Пайтон значительно упрощает разработку и отладку за счет программирования с построчной обработкой.</li>
<li>Поддержка разнообразных платформ и операционных систем. Она обеспечивает гибкость и переносимость готовых приложений.</li>
<li>Наличие стандартных библиотек и сторонних модулей, используемых для упрощения и ускорения разработки. Большинство программного обеспечения пишется не с нуля.</li>
<li>Динамическая типизация. Это значит, что переменные могут менять свой тип данных во время исполнения исходного кода.</li>
</ol>
<p>Работать с Python легко и просто. Он является открытым и свободным средством программирования, что дает возможность его бесплатного использования, распространения и изменения.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9F%D1%80%D0%B5%D0%B4%D0%B2%D0%B0%D1%80%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BF%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0"></span>Предварительная подготовка<span class="ez-toc-section-end"></span></h2>
<p>Пайтон требует от начинающих разработчиков небольшой предварительной подготовки. Она заключается в установке ЯП и специализированных инструментов программиста.</p>
<p>Перед тем как писать текст первой утилиты на Python, пользователю потребуется:</p>
<ol>
<li>Открыть официальный сайт рассматриваемого языка программирования.</li>
<li>Перейти в раздел «Downloads» и выбрать версию языка. Последние сборки обычно отображаются на главной странице веб-сервиса.</li>
<li>Дождаться скачивания дистрибутива для выбранной операционной системы, нажав на соответствующую кнопку на экране.</li>
<li>Запустить «Мастер установки». Иногда для успешного продолжения инициализации требуются права администратора.</li>
<li>Следовать подсказкам на экране. Обычно достаточно кликать по «Далее», соглашаться с предлагаемыми правилами и принципами обслуживания, а также указывать пути инициализации. По умолчанию дистрибутив устанавливается в Windows в папку Program Files или по пути /usr/local/bin в Linux и MacOS.</li>
<li>Открыть командную строку или терминал, ввести python –version. Если язык установлен, в консоли отобразится версия Пайтона.</li>
</ol>
<p>Старые версии Linux и MacOS были оснащены Питоном заранее. На них ничего устанавливать не требовалось. Для Windows скачивание дистрибутива с официального сайта ЯП всегда являлось обязательным.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F"></span>Основы программирования<span class="ez-toc-section-end"></span></h2>
<p>Чтобы сделать собственную программу и записать ее код, одного установленного Пайтона будет недостаточно. Разработчик должен сначала изучить основные (базовые) элементы ЯП. Далее будет представлена информация, которая позволит начать работать с Python с нуля максимально комфортно.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D0%BB%D1%8E%D1%87%D0%B5%D0%B2%D1%8B%D0%B5_%D1%81%D0%BB%D0%BE%D0%B2%D0%B0"></span>Ключевые слова<span class="ez-toc-section-end"></span></h3>
<p>Даже самая маленькая программа на Питоне будет иметь ключевые слова. Это зарезервированные синтаксисом языка слова. Они используются для реализации функций и инструментов.</p>
<p>При написании приложений разработчики будут создавать собственные ключевые слова. Они называются переменными (variables). Подбор правильного имени переменной – достаточно простая задача. Главное не использовать ранее зарезервированные синтаксисом слова.</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/hhwHO4VoeweSunmBT5Y1ep11A873FM2zdwV7EZr9P7opM6PARbzg10S88-g7Fzk58kz3J3PDWBXqvPDOHl8p4buaYyzWZEgxzrgmpU-rGjr0t_ryxPnkJ2gXAgDWNkhUWWb0LyipZQ0tGGd2Auo3Hg" alt="Основы разработки на Python"/></figure>
<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/s7Yy47MS9nOPHUTjg-pTUTtI0N8VPtEyQzHsWuQJG3l18DfC3hlMo38qm0IVFnXaNYiVm4a7gurO0F9tlcbhr5JfEsZRTo5725tVEZBZwirhqycC4WdvEryTc3cOfF_A_uBB-0AuNZifZP2ZfKaRqA" alt="Основы разработки на Python"/></figure>
<p>Выше можно увидеть список актуальных для Пайтона ключевых слов. Основной упор при обучении у новичков делается на возможности приложений (исходного кода) «разговаривать». Для этого используется команда print.</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/WGuy_h_AeRT5EqQMru2-kRaTZrRryZj-wZvnY0bbJ1_7G1-B8OoV0QKln9utJl7oBcvmVtZ_gDWJWAW7rNRUPpP006iJ6iw5MUuC-UhwxXrH1Kv2Ofr7wGczrGEQGH1kk4yOPxqrfQD9aW_yfONuUA" alt="Основы разработки на Python"/></figure>
<p>Если написать пример кода, представленный выше, в консоли после его обработки появится запись «Hello, world!» (без кавычек). Предложение здесь начинается с print, которое воспринимается системой как команда «печать» или «вывод». Далее следует строка текста в кавычках, заключенная предварительно в скобки. Это запись, которую будет обрабатывать и выводить print.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A2%D0%B8%D0%BF%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%B8_%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F"></span>Типизация и значения<span class="ez-toc-section-end"></span></h3>
<p>Любая программа, написанная на Питоне, работает с разнообразными значениями. Они обозначаются как values и являются базовыми элементами. Значениями называются данные, которыми оперирует программное обеспечение. Вот несколько примеров:</p>
<ul>
<li>цифры: 2, 5, 8, 91;</li>
<li>текст – строка «Hello, World!»</li>
</ul>
<p>Значения относятся к разным типам данных. У рассматриваемого средства разработки поддерживается динамическая типизация. Она позволяет приложению «понимать», какие значения и типы данных использует исходный код, а затем обрабатывать соответствующие элементы должным образом.</p>
<p>Print умеет работать с самыми разными значениями. Пример – с числовыми. При записи print (5) в консоли появится число 5. Изучаемый ЯП умеет работать с такими типами данных как:</p>
<ol>
<li>Int – целые числа. Используются для хранения любых чисел. Сюда относятся все положительные и отрицательные числа, а также ноль. Они используются при счете.</li>
<li>Float – вещественные числа. Это значения с дробной частью, которая отделяется запятой.</li>
<li>Str (String) – строки. Включают в себя любые символьные наборы, заключенные в двойных или одинарных кавычках. Разницы между ними нет. Главное – использовать при написании кода один и тот же тип кавычек.</li>
<li>List – списки. Тип данных, который включает в себя некоторые последовательности.</li>
<li>Bool – логические значения. Они встречаются только двух типов: истина (true) и ложь (false). В основном используются в циклах и при решении математических задач.</li>
</ol>
<p>Эта информация поможет создать первый грамотный проект, который будет работать максимально эффективно. Если разработчик неправильно задает тип данных, в приложениях со строгой типизацией могут возникнуть серьезные проблемы.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9F%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5"></span>Переменные<span class="ez-toc-section-end"></span></h3>
<p>У Python имеется возможность манипулирования переменными. Так называется именованная ячейка памяти, которая выделяется для работы в программе. Она хранит в себе некоторые данные, доступные для вывода через print. Переменная будет ссылаться на определенное значение в памяти. С такими элементами работает абсолютно любая программа – даже самая маленькая.</p>
<p>Чтобы использовать переменную в исходном коде, ей сначала необходимо присвоить то или иной значение. Доступ к нему осуществляется через имя переменной. Для присваивания значения используется так называемая «инструкция присваивания». Она обозначается как знак равенства (=).</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/pSHq26KhzhLMqkWFmcdwwVGFJtFqZWQVHLzUs9gyPWGya0Xa3uYsfq5kWJbXuab_W0VDnw4AXoEXLN2IShjdnoGHrJ-YiMFnHrBheWrwwT8stlqbrltdeu-ymo7iG3C7WbxKh7SUklvvvRnDA_Hg9Q" alt="Основы разработки на Python"/></figure>
<p>Выше – готовый код для проверки принципов работы с рассматриваемым элементом разработки. В консоли появится характерное сообщение об ошибке. Оно укажет на неправильный синтаксис, используемый в коде.</p>
<p>Такое поведение связано с тем, что разработчик попытался использовать зарезервированное слово class для имени переменных. Это невозможно. Как только язык увидит ключевое слово, он будет обрабатывать его особым образом, а не как «название» для классов и иных элементов будущего приложения. Из-за этого возникает характерное сообщение о синтаксической ошибке.</p>
<p>Значения переменных можно вывести на экран через функцию print:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/ASwki7_UaOmrZ1MgZI5LQWC8VxkW_ttu9BOt-2313BUOjAqfKDvLEr5SqlFizg8jqdlBEDF-W7uGzh-mFtOFsAtghs8KRA0T3mqixr7a4PhrJ-W-03A5aJZbsFPIckHY4GxvOmYGOOSLIYMGeXGM2g" alt="Основы разработки на Python"/></figure>
<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/Sje33A2UJxxdoyurqt0IJVPbLtKrbdrjvtJ3XZau7G2LRIdH95RkU3ggRHzc042RroCE4uekU6TDe4zBBHzF6V5E868MPF7w3tPoiCraWIcIIkH--SC6Q2t8ucVfYYBPR6l58GIlAgSK6eDUfuk8Bw" alt="Основы разработки на Python"/></figure>
<p>Выше – пример того, как выглядит команда print в Python при выводе переменных на экран. Можно использовать type для отображения data type. В Python этот момент зависит от того, на данные какого типа будет ссылаться переменная.</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/zXyfEP8rNWSmr8YeYsmoCXJkmAOnogAG6lj_ToI_5STQPkroyN4e7sUuyCJ5xRFUg7SFUHwmsC9FbVcKJiY8RqTph268mtpxPXJEqHj3TIxCtr9SwYNbRY8Pghky5grVk9ZTC_nl9r2gRXBrso4srA" alt="Основы разработки на Python"/></figure>
<p>Выше – образец того, как выглядит простой способ получения информации о data types для переменных.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9F%D1%80%D0%B8%D1%81%D0%B2%D0%B0%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%BC%D0%B5%D0%BD"></span><em>Присваивание имен</em><span class="ez-toc-section-end"></span></h4>
<p>В Python и других языках программирования необходимо грамотно присваивать имена переменным, классам и другим объектам. Рекомендуется придерживаться следующих принципов:</p>
<ol>
<li>Нельзя использовать в именах ключевые слова.</li>
<li>Имена объектов исходного кода должны однозначно «документировать элемент». Это значит, что «названия» должны хорошо и понятно характеризовать то, для чего они используются или что описывают.</li>
<li>Имя может быть сколь угодно длинным, но включать в себя оно может буквы и цифры.</li>
<li>Имена не могут начинаться с цифр.</li>
<li>Негласное синтаксическое правило, которое подойдет для начинающих, – использование заглавных букв для разделения слов (в сложных названиях).</li>
<li>Не рекомендуется пользоваться заглавными буквами для односложных переменных. Они больше подходят для классов и методов.</li>
<li>Более опытные разработчики могут разделять слова в именах при помощи нижнего подчеркивания. С него же могут начинаться названия переменных в Python, но такие элементы имеют специальное предназначение.</li>
</ol>
<p>Все эти простые правила помогут сделать программу на Python не только рабочей, но и читабельной.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8"></span>Инструкции<span class="ez-toc-section-end"></span></h3>
<p>Инструкции – части кода, которые могут быть выполнены рассматриваемым языком. Они не выводятся через print. Все приложение представляет собой некоторую последовательность инструкций.</p>
<p>Соответствующие команды выполняются друг за другом. Это происходит до тех пор, пока все инструкции в исходном документе не будут выполнены. Python считывает инструкции сверху–вниз.</p>
<p>Print – это маленькая инструкция. Присваивание значений объектам исходного кода – тоже. Инструкции выполняются за счет вычислений выражений одного за другим. После этого система применит необходимые операции (среди которых встречается print) к соответствующим выражениям.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%92%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F"></span>Выражения<span class="ez-toc-section-end"></span></h3>
<p>Выражения (expressions) – комбинации значений, переменных и операторов. В языках разработки значение – это само по себе выражение.</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/Ea5zls7aAAkioLD7LMLwOlsp11iMAJEbKTUYSZHI9CrAJ6yoO2WF3b-SZZYpvQzaLT2JqjiUKIZwrQDGoSkOWFDiX7OPpVR8MeKaCfEKZ1WwGDVzMM8xaj8hhUef4JNXcPuv_aalYKV7-OwuAh73EA" alt="Основы разработки на Python"/></figure>
<p>Если записывать предложенный выше фрагмент в интерактивном режиме, система вычислит значения выражений и выведет их в консоль в виде результата. Никакие команды вроде print не потребуются. Сами по себе выражения в исходном коде программы ничего не делают. </p>
<p>Вызов функции – это тоже выражение.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D1%8B_%D0%B8_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D0%BD%D0%B4%D1%8B"></span>Операторы и операнды<span class="ez-toc-section-end"></span></h3>
<p>Чтобы сделать программу, необходимо усвоить, что собой представляют операторы и операнды. Оператор – это объект, который умеет управлять разнообразными операндами при помощи вычислений. Операнд – объект, которым можно манипулировать через операторы или значения, к которым применяются операторы.</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/37r6PxBAOb6Uwyh6pqgcqOJmcftuoOzvg-ZiCBTYOIT6lT8ItibGvVHVAR_g-e-mZvBy_pT4uISwH1ijzfhjHngYtyq55AOUoLGril2GJr48yA2wnI-wL8MOZKpbuiVAAt5vCIlE6t-RECRvOnxR4g" alt="Основы разработки на Python"/></figure>
<p>Выше – пример того, как выглядит список арифметических операторов. Они помогают получать корректные решения математических задач. Разные ЯП могут использовать различные принципы работы одних и тех же операторов. Пример – в C результатом деления целого числа на целое станет целочисленный «параметр». При возникновении остатка система отбросит его и округлит результат до меньшего целого. Для вывода результата используется не print, а printf:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/USZTiFAcuhKv1zK8Q1de65oCaS3Zd9FoFPF6WAvwU-WIeN9ppKlk4RULaOYXgkizYFT3rW29jK5d6ivbCT1pbSmeVtxbVwYgMHDwz0EyRZDMtDVAmRbI5mZkgTNAMAi7bhK1esROiGd-09bZEu5erw" alt="Основы разработки на Python"/></figure>
<p>Для получения корректного ответа необходимо использовать тип float.:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/w-LiH5K_noPt21UX28gP4Z2qOqtOydTC9B9E_JS1__vPmIjq8WnPu6AXoZDPtT9olBWSCv91hijuKt91nEIMQu7PSmtD28YZD-jsvdlJh5qJUF3ckUnGEJ7ftzkjWfJ8NrQ44OAkQ6G4Y5PBFbKH2w" alt="Основы разработки на Python"/></figure>
<p>У Питона результат деления целого числа на целое – это число с плавающей точкой:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/XMOrwPyGHvkdjbCa94-179DXDySZLMfjCHy6qED5m4_y7FdMNrmmA9WSvHGivISdcnb7oiKKXO71M8mWqA-Sz5WsDWEEtGRw8IgWkirDNy-kckJjXVsm9wCG6MVfZwSmoZdwMAdIVBUrZIVwBL82Ow" alt="Основы разработки на Python"/></figure>
<p>В предложенном примере print использовать не нужно. Чтобы система повела себя подобно C, необходимо воспользоваться оператором целочисленного деления:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/ZwGB7PQhDodHEwOkG2f0ZhQepVGxPgxtbh243YWGkbWijV1Tid-iXqAP4VVSdDcapftiRXyfqjR1_HkYLsg0H41YqsgZmxDnzrF9jy6jRYtWgHCrqeYYnMLj0zNBw7dE5G1kiwEAPv5ATMJh-ISFaQ" alt="Основы разработки на Python"/></figure>
<p>Порядок расчетов примерно такой: выражения в скобках, возведение в степень, умножение, деление, модуль, сложение, вычитание. Если операторы имеют одинаковый приоритет (умножение/деление/модуль, сложение/вычитание), они будут выполняться слева-направо.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A3%D1%81%D0%BB%D0%BE%D0%B2%D0%BD%D1%8B%D0%B9_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80"></span><em>Условный оператор</em><span class="ez-toc-section-end"></span></h4>
<p>Изучая примеры программ на Python, требуется обратить внимание на условные операторы. Они часто используются в циклах и обеспечивают ветвление:</p>
<ol>
<li>If – основной условный оператор. Используется для того, чтобы проверить условие и выполнение фрагмента программы. Функция реализовывается, если условие является истиной.</li>
<li>If-else – применяется, когда нужно выбрать действие из двух возможных. Если значение выражения после if является истиной, выполняется одна операция. В противном случае – то, что написано после else.</li>
<li>If-elif-else. Сложное ветвление. Дает возможность выбрать алгоритм действий из нескольких предложенных. Система будет проверять каждый блок elseif, пока не найдет true-значение. Если оно не обнаружено, выполнится блок else.</li>
</ol>
<p>Условные конструкции в Python используются как новичками, так и более опытными разработчиками.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%B2%D0%B2%D0%BE%D0%B4"></span>Консольный ввод<span class="ez-toc-section-end"></span></h3>
<p>В некоторых приложениях можно писать различные данные и информацию. Для вывода сведений в консоль используется print. Для консольного ввода у рассматриваемого ЯП используется встроенная функция – input. Она работает иначе, чем print. При обработке input система остановит выполнение исходного кода и будет ждать пользовательского ввода. Как только информация будет введена, а клиент нажмет на Enter, приложение продолжит работать.</p>
<p>Для работы со входными данными требуется их сохранение. Это делается через переменные:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/rIcsW2KTlz_yqXtxPMTyOWgTqetdBM6L4w3_DEgzSwwTzqlE9Nh8fdo4Br6bQEWB0ye6SoldvEe_OTq3AQroAaicKlOf_fgAd7SKuaieWfXDgq43pjJgo6ClPTdIlRpm43kySm1KvQSY0qgBO_AY7Q" alt="Основы разработки на Python"/></figure>
<p>Input и print не исключают друг друга. Они могут использоваться совместно для выполнения некоторых команд и операций.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A6%D0%B8%D0%BA%D0%BB%D1%8B"></span>Циклы<span class="ez-toc-section-end"></span></h3>
<p>Еще одним важным элементом разработки служат циклы. Они могут называться «петлями». С их помощью можно организовывать повторение определенных фрагментов кода. Пример – print (печать в консоли).</p>
<p>Циклы используются для автоматизации повторяющихся задач. В рассматриваемом ЯП используются различные виды «петель»:</p>
<ul>
<li>бесконечные;</li>
<li>for;</li>
<li>while.</li>
</ul>
<p>Результаты обработки могут выводиться через print в консоль. От них иногда строится ветвление исходного приложения (выбор последующего алгоритма действий).</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="While"></span><em>While</em><span class="ez-toc-section-end"></span></h4>
<p>While – простой и понятный цикл. Он называется циклом с предусловием:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/pAKoMkGe-cJsrMEfn3Y_cGYIk69PdTm50MTgQqXxty9p5dWprhYg1JqiU-ZA8p7byuSSSkDdvfob1BfbxHZLWxb6dCc04W5rm2N5iflPPU3782nLAWX_W20N8fNZDK-BK8ZwCsrka71VPrzrpWq9Bg" alt="Основы разработки на Python"/></figure>
<p>Здесь print срабатывает после выполнения условия «Пока x меньше 5, печатать x и после – прибавлять в нему единицу». Неправильное или нелогичное условие while обеспечит бесконечный цикл.</p>
<p>Для остановки цикла используются команды break и continue.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="For"></span><em>For</em><span class="ez-toc-section-end"></span></h4>
<p>For – более распространенный вариант цикла в Python и других языках. Для него устанавливается не условие в чистом виде, а массив информации. При каждой итерации система будет уточнять, есть ли в объекте элементы, по которым еще не осуществлялся проход. For тоже может использоваться с print.</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/fO8Dt47bEpFR3UM617wFIZ97yJ3o0Y_W96Eetr_-hASc84Bkbj-ekJjsppLwASeQulwouLhF7soH1e70S9fdp3A4mcJjYYutn49ubgZatiFI4um4KFnxwFjZ8gD1wGXg-m8D8Xx8DXZovtXRzuwwIQ" alt="Основы разработки на Python"/></figure>
<p>В предложенном фрагменте:</p>
<ol>
<li>Переменная number обновляется при каждой итерации.</li>
<li>Сначала number включает в себя первый элемент. Он выводится через print.</li>
<li>Далее, на второй итерации, значение будет равно второму элементу.</li>
<li>Операция повторяется до конца списка.</li>
</ol>
<p>Используемую переменную можно назвать любым именем.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9D%D0%B0%D0%B3%D0%BB%D1%8F%D0%B4%D0%BD%D1%8B%D0%B5_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B"></span>Наглядные примеры<span class="ez-toc-section-end"></span></h2>
<p>Основы разработки на Пайтоне уже рассмотрены. Теперь можно изучить несколько интересных примеров приложений.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%97%D0%B0%D1%80%D1%8F%D0%B4_%D0%B0%D0%BA%D0%BA%D1%83%D0%BC%D1%83%D0%BB%D1%8F%D1%82%D0%BE%D1%80%D0%B0"></span>Заряд аккумулятора<span class="ez-toc-section-end"></span></h3>
<p>Проверить заряд аккумулятора на устройстве помогает встроенный модуль psutil. Он включен в стандартную Питон-библиотеку и не требует предварительной инициализации:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/iZ6ldm8m98Uv7ndxlSxARpzIhE5Nqbsc_26mboweJWFg7DqjZDkIWU96lE5xJ1OL7x5d7WU6P-u8Xw4xfW7UURLgVw5U3iCTLnb_XtTC2De5DKGSwkEcxlIYQjvNYQ1fkyP4fIhKKHlXg6mzqQg5SQ" alt="Основы разработки на Python"/></figure>
<p>Программу можно улучшить при помощи добавления уведомления о низком заряде. Для этого используется модуль pyautogui. Он может быть загружен через pip install:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/CBTbzvuHz0S2ZokqXbWVnaBOC8Zvtcwuwwcq0oMaTicOBoSyCXpvkoMe_bFkG2dKnR36n_tXEakAYdb66e1RbyHrIpTL5vXhTKDhG00qf882Dw18t5W7CqAEhagoGynIEzE0-DBJ4GCe1eRco5brKg" alt="Основы разработки на Python"/></figure>
<p>Здесь можно заметить использование циклов.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A2%D0%B5%D0%BA%D1%81%D1%82_%D0%B2_%D0%B3%D0%BE%D0%BB%D0%BE%D1%81"></span>Текст в голос<span class="ez-toc-section-end"></span></h3>
<p>Преобразование text в голос на PY можно за счет библиотеки gTTS. Она не включена в стандартную библиотеку и устанавливается за счет pip:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/OztqgwIUZBJI0xIldD2eupBWyWvdWfTjRey9153FB77212eW-iuTcrLdZ2ryBJA_gUytWzvnB_u1oeHVYpMUxBhtTMIi3zHwnu8yMe-ore-OorjvitLHHmXHo9J8GKkOsc5z2qePaPnWAXWKnWLRfQ" alt="Основы разработки на Python"/></figure>
<p>Кроме преобразования текста в голос, здесь используется сохранение полученного результата.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%93%D0%B5%D0%BD%D0%B5%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B0%D1%80%D0%BE%D0%BB%D1%8F"></span>Генерирование пароля<span class="ez-toc-section-end"></span></h3>
<p>А вот небольшая утилита на Python, которая поможет сгенерировать разнообразные пароли:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/EWHO6_xyI5or9lsZi9rczXWeOU_TSN3X0BgDLOcZUdUCrAjO3NO0_34JgfLtoqdiB2trYMVyx5wrstetv4_QHeHTZrrozNXdWqZkN1xQ-YPsPc_ktxdh1rtwqfJBspXX_JusCkr7GXpegymjbVnrOQ" alt="Основы разработки на Python"/></figure>
<p>Для ее функционирования достаточно воспользоваться модулем из стандартной библиотеки языка. Он называется random и позволяет случайным образом генерировать информацию.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D0%BE%D0%BD%D0%B2%D0%B5%D1%80%D1%82%D0%B5%D1%80"></span>Конвертер<span class="ez-toc-section-end"></span></h3>
<p>Преобразования одних документов в другие – распространенная операция. На рассматриваемом ЯП получится написать собственный конвертер. Ниже – пример, помогающий перезаписывать PNG в ICO:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/1PzdSBdjnBZLF2fpjLwcSd3v-OlWtVepIgWRcwNpZfgJeMF-xF4nOYWm0tdWXmzcAcSUVi9c7Hjkx78txKkzcTI7t9n004dX7SZ0EUpWj2g1_SXjUq1kbfKFC48ZcJcyzeQvvdXN06Ofp2bMYRvYFw" alt="Основы разработки на Python"/></figure>
<p>Здесь задействован модуль Pillow. Он не включен в стандартную библиотеку. Требует предварительной установки за счет команды pip install Pillow. Только после этого можно задействовать инструмент в разработке.</p>
<p>Интересует <a href="https://otus.ru/lessons/python-professional/?utm_source=oj&utm_medium=affilate&utm_campaign=python" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right">Python<span class="wpel-icon wpel-image wpel-icon-6"></span></a>? Добро пожаловать на курс в Otus!</p>
</div><!-- .post-content -->
<div class="the-post-foot cf">
<div class="tag-share cf">
<div class="post-tags"><a href="https://otus.ru/journal/tag/python/" rel="tag" data-wpel-link="internal">Python</a></div>
<div class="post-share">
<div class="post-share-icons cf">
<span class="counters">
</span>
<a href="https://www.facebook.com/sharer.php?u=https%3A%2F%2Fotus.ru%2Fjournal%2Fosnovy-razrabotki-na-python%2F" class="link facebook wpel-icon-right" target="_blank" title="Share on Facebook" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-facebook"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://twitter.com/intent/tweet?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fosnovy-razrabotki-na-python%2F&text=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B%20%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8%20%D0%BD%D0%B0%20Python" class="link twitter wpel-icon-right" target="_blank" title="Share on Twitter" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-twitter"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fotus.ru%2Fjournal%2Fosnovy-razrabotki-na-python%2F" class="link linkedin wpel-icon-right" target="_blank" title="LinkedIn" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-linkedin"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://pinterest.com/pin/create/button/?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fosnovy-razrabotki-na-python%2F&media=https%3A%2F%2Fotus.ru%2Fjournal%2Fwp-content%2Fuploads%2F2023%2F11%2Foj-1080x72015-1.jpg&description=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B%20%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8%20%D0%BD%D0%B0%20Python" class="link pinterest wpel-icon-right" target="_blank" title="Pinterest" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-pinterest-p"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
</div>
</div>
</div>
</div>
<div class="post-nav">
<div class="post previous cf">
<a href="https://otus.ru/journal/json-opisanie-i-osobennosti/" title="Prev Post" class="nav-icon" data-wpel-link="internal">
<i class="fa fa-angle-left"></i>
</a>
<span class="content">
<a href="https://otus.ru/journal/json-opisanie-i-osobennosti/" class="image-link" rel="previous" data-wpel-link="internal">
<img width="150" height="106" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20150%20106%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-thumbnail size-thumbnail lazyload wp-post-image" alt="Json: описание и особенности" decoding="async" data-srcset="https://otus.ru/journal/wp-content/uploads/2023/11/oj-1080x72014-1-150x106.jpg 150w, https://otus.ru/journal/wp-content/uploads/2023/11/oj-1080x72014-1-300x212.jpg 300w, https://otus.ru/journal/wp-content/uploads/2023/11/oj-1080x72014-1-1024x724.jpg 1024w, https://otus.ru/journal/wp-content/uploads/2023/11/oj-1080x72014-1-768x543.jpg 768w, https://otus.ru/journal/wp-content/uploads/2023/11/oj-1080x72014-1-1536x1086.jpg 1536w" data-src="https://otus.ru/journal/wp-content/uploads/2023/11/oj-1080x72014-1-150x106.jpg" data-sizes="(max-width: 150px) 100vw, 150px" title="Json: описание и особенности" /> </a>
<div class="post-meta">
<span class="label">Prev Post</span>
<div class="post-meta post-meta-b">
<h2 class="post-title">
<a href="https://otus.ru/journal/json-opisanie-i-osobennosti/" data-wpel-link="internal">Json: описание и особенности</a>
</h2>
<div class="below">
<a href="https://otus.ru/journal/json-opisanie-i-osobennosti/" class="meta-item date-link" data-wpel-link="internal"><time class="post-date" datetime="2023-11-09T15:48:29+00:00">9 ноября, 2023</time></a>
<span class="meta-sep"></span>
<span class="meta-item read-time">7 Mins Read</span>
</div>
</div> </div>
</span>
</div>
<div class="post next cf">
<a href="https://otus.ru/journal/product-menedzher-znakomstvo-s-professiej/" title="Next Post" class="nav-icon" data-wpel-link="internal">
<i class="fa fa-angle-right"></i>
</a>
<span class="content">
<a href="https://otus.ru/journal/product-menedzher-znakomstvo-s-professiej/" class="image-link" rel="next" data-wpel-link="internal">
<img width="150" height="106" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20150%20106%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-thumbnail size-thumbnail lazyload wp-post-image" alt="Product-менеджер: знакомство с профессией" decoding="async" data-srcset="https://otus.ru/journal/wp-content/uploads/2023/11/oj-1080x72016-1-150x106.jpg 150w, https://otus.ru/journal/wp-content/uploads/2023/11/oj-1080x72016-1-300x212.jpg 300w, https://otus.ru/journal/wp-content/uploads/2023/11/oj-1080x72016-1-1024x724.jpg 1024w, https://otus.ru/journal/wp-content/uploads/2023/11/oj-1080x72016-1-768x543.jpg 768w, https://otus.ru/journal/wp-content/uploads/2023/11/oj-1080x72016-1-1536x1086.jpg 1536w" data-src="https://otus.ru/journal/wp-content/uploads/2023/11/oj-1080x72016-1-150x106.jpg" data-sizes="(max-width: 150px) 100vw, 150px" title="Product-менеджер: знакомство с профессией" /> </a>
<div class="post-meta">
<span class="label">Next Post</span>
<div class="post-meta post-meta-b">
<h2 class="post-title">
<a href="https://otus.ru/journal/product-menedzher-znakomstvo-s-professiej/" data-wpel-link="internal">Product-менеджер: знакомство с профессией</a>
</h2>
<div class="below">
<a href="https://otus.ru/journal/product-menedzher-znakomstvo-s-professiej/" class="meta-item date-link" data-wpel-link="internal"><time class="post-date" datetime="2023-11-09T19:18:20+00:00">9 ноября, 2023</time></a>
<span class="meta-sep"></span>
<span class="meta-item read-time">8 Mins Read</span>
</div>
</div> </div>
</span>
</div>
</div>
<section class="related-posts grid-3">
<h4 class="section-head"><span class="title">Читать ещё</span></h4>
<div class="ts-row posts cf">
<article class="post col-4">
<a href="https://otus.ru/journal/uroven-gotovnosti-cto-k-2026/" title="Уровень готовности CTO к 2026" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Уровень готовности CTO к 2026" title="Уровень готовности CTO к 2026" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-270x180.jpg 270w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-370x245.jpg 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-270x180.jpg" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/uroven-gotovnosti-cto-k-2026/" class="post-link" data-wpel-link="internal">Уровень готовности CTO к 2026</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-11-16T19:50:59+00:00">16 ноября, 2025</time>
</div>
</div>
</article >
<article class="post col-4">
<a href="https://otus.ru/journal/novye-uroki-noyabrya-tolko-top-temy-po-programmirovaniju/" title="Новые уроки ноября: только топ-темы по программированию" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Новые уроки ноября: только топ-темы по программированию" title="Новые уроки ноября: только топ-темы по программированию" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-270x180.jpg 270w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-370x245.jpg 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-270x180.jpg" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/novye-uroki-noyabrya-tolko-top-temy-po-programmirovaniju/" class="post-link" data-wpel-link="internal">Новые уроки ноября: только топ-темы по программированию</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-11-09T23:24:11+00:00">9 ноября, 2025</time>
</div>
</div>
</article >
<article class="post col-4">
<a href="https://otus.ru/journal/schjot-idjot-na-chasy/" title="Счёт идёт на часы" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Счёт идёт на часы" title="Счёт идёт на часы" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-270x180.png 270w, https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-770x515.png 770w, https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-370x245.png 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-270x180.png" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/schjot-idjot-na-chasy/" class="post-link" data-wpel-link="internal">Счёт идёт на часы</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-10-30T15:04:59+00:00">30 октября, 2025</time>
</div>
</div>
</article >
</div>
</section>
</article> <!-- .the-post -->
</div>
<aside class="col-4 sidebar">
<div class="inner">
<ul>
<li id="search-2" class="widget widget_search"><h5 class="widget-title"><span>Поиск по блогу</span></h5>
<form method="get" class="search-form" action="https://otus.ru/journal/">
<label>
<span class="screen-reader-text">Search for:</span>
<input type="search" class="search-field" placeholder="Введите запрос и нажмите Enter" value="" name="s" title="Search for:" />
</label>
<button type="submit" class="search-submit"><i class="fa fa-search"></i></button>
</form>
</li>
<li id="tag_cloud-5" class="widget widget_tag_cloud"><h5 class="widget-title"><span>Метки</span></h5><div class="tagcloud"><a href="https://otus.ru/journal/tag/android-2/" class="tag-cloud-link tag-link-74 tag-link-position-1" style="font-size: 12.472222222222pt;" aria-label="Android (34 элемента)" data-wpel-link="internal">Android</a>
<a href="https://otus.ru/journal/tag/c-3/" class="tag-cloud-link tag-link-91 tag-link-position-2" style="font-size: 10.916666666667pt;" aria-label="C (23 элемента)" data-wpel-link="internal">C</a>
<a href="https://otus.ru/journal/tag/c-2/" class="tag-cloud-link tag-link-81 tag-link-position-3" style="font-size: 12.666666666667pt;" aria-label="C# (35 элементов)" data-wpel-link="internal">C#</a>
<a href="https://otus.ru/journal/tag/c/" class="tag-cloud-link tag-link-20 tag-link-position-4" style="font-size: 12.472222222222pt;" aria-label="c++ (34 элемента)" data-wpel-link="internal">c++</a>
<a href="https://otus.ru/journal/tag/computer-science/" class="tag-cloud-link tag-link-209 tag-link-position-5" style="font-size: 15.972222222222pt;" aria-label="computer science (78 элементов)" data-wpel-link="internal">computer science</a>
<a href="https://otus.ru/journal/tag/css/" class="tag-cloud-link tag-link-288 tag-link-position-6" style="font-size: 8.6805555555556pt;" aria-label="CSS (13 элементов)" data-wpel-link="internal">CSS</a>
<a href="https://otus.ru/journal/tag/data-science/" class="tag-cloud-link tag-link-151 tag-link-position-7" style="font-size: 8pt;" aria-label="Data Science (11 элементов)" data-wpel-link="internal">Data Science</a>
<a href="https://otus.ru/journal/tag/devops/" class="tag-cloud-link tag-link-98 tag-link-position-8" style="font-size: 10.138888888889pt;" aria-label="devops (19 элементов)" data-wpel-link="internal">devops</a>
<a href="https://otus.ru/journal/tag/docker/" class="tag-cloud-link tag-link-143 tag-link-position-9" style="font-size: 8.2916666666667pt;" aria-label="Docker (12 элементов)" data-wpel-link="internal">Docker</a>
<a href="https://otus.ru/journal/tag/gamedev/" class="tag-cloud-link tag-link-25 tag-link-position-10" style="font-size: 11.694444444444pt;" aria-label="gamedev (28 элементов)" data-wpel-link="internal">gamedev</a>
<a href="https://otus.ru/journal/tag/hr/" class="tag-cloud-link tag-link-103 tag-link-position-11" style="font-size: 8pt;" aria-label="hr (11 элементов)" data-wpel-link="internal">hr</a>
<a href="https://otus.ru/journal/tag/html/" class="tag-cloud-link tag-link-217 tag-link-position-12" style="font-size: 11.208333333333pt;" aria-label="HTML (25 элементов)" data-wpel-link="internal">HTML</a>
<a href="https://otus.ru/journal/tag/ios/" class="tag-cloud-link tag-link-101 tag-link-position-13" style="font-size: 8.9722222222222pt;" aria-label="iOS (14 элементов)" data-wpel-link="internal">iOS</a>
<a href="https://otus.ru/journal/tag/it/" class="tag-cloud-link tag-link-50 tag-link-position-14" style="font-size: 10.527777777778pt;" aria-label="IT (21 элемент)" data-wpel-link="internal">IT</a>
<a href="https://otus.ru/journal/tag/java/" class="tag-cloud-link tag-link-75 tag-link-position-15" style="font-size: 15.680555555556pt;" aria-label="Java (73 элемента)" data-wpel-link="internal">Java</a>
<a href="https://otus.ru/journal/tag/javascript/" class="tag-cloud-link tag-link-83 tag-link-position-16" style="font-size: 14.319444444444pt;" aria-label="JavaScript (53 элемента)" data-wpel-link="internal">JavaScript</a>
<a href="https://otus.ru/journal/tag/linux/" class="tag-cloud-link tag-link-141 tag-link-position-17" style="font-size: 11.888888888889pt;" aria-label="Linux (29 элементов)" data-wpel-link="internal">Linux</a>
<a href="https://otus.ru/journal/tag/machine-learning/" class="tag-cloud-link tag-link-167 tag-link-position-18" style="font-size: 8.6805555555556pt;" aria-label="Machine Learning (13 элементов)" data-wpel-link="internal">Machine Learning</a>
<a href="https://otus.ru/journal/tag/otus-book/" class="tag-cloud-link tag-link-261 tag-link-position-19" style="font-size: 9.9444444444444pt;" aria-label="otus book (18 элементов)" data-wpel-link="internal">otus book</a>
<a href="https://otus.ru/journal/tag/php/" class="tag-cloud-link tag-link-45 tag-link-position-20" style="font-size: 10.527777777778pt;" aria-label="PHP (21 элемент)" data-wpel-link="internal">PHP</a>
<a href="https://otus.ru/journal/tag/python/" class="tag-cloud-link tag-link-27 tag-link-position-21" style="font-size: 16.944444444444pt;" aria-label="Python (99 элементов)" data-wpel-link="internal">Python</a>
<a href="https://otus.ru/journal/tag/qa/" class="tag-cloud-link tag-link-155 tag-link-position-22" style="font-size: 11.402777777778pt;" aria-label="qa (26 элементов)" data-wpel-link="internal">qa</a>
<a href="https://otus.ru/journal/tag/sql/" class="tag-cloud-link tag-link-38 tag-link-position-23" style="font-size: 12.861111111111pt;" aria-label="SQL (37 элементов)" data-wpel-link="internal">SQL</a>
<a href="https://otus.ru/journal/tag/team-lead/" class="tag-cloud-link tag-link-364 tag-link-position-24" style="font-size: 9.9444444444444pt;" aria-label="team lead (18 элементов)" data-wpel-link="internal">team lead</a>
<a href="https://otus.ru/journal/tag/unity/" class="tag-cloud-link tag-link-24 tag-link-position-25" style="font-size: 8pt;" aria-label="unity (11 элементов)" data-wpel-link="internal">unity</a>
<a href="https://otus.ru/journal/tag/algoritmy/" class="tag-cloud-link tag-link-30 tag-link-position-26" style="font-size: 9.9444444444444pt;" aria-label="Алгоритмы (18 элементов)" data-wpel-link="internal">Алгоритмы</a>
<a href="https://otus.ru/journal/tag/bazy-dannyh/" class="tag-cloud-link tag-link-40 tag-link-position-27" style="font-size: 10.138888888889pt;" aria-label="Базы данных (19 элементов)" data-wpel-link="internal">Базы данных</a>
<a href="https://otus.ru/journal/tag/matematika/" class="tag-cloud-link tag-link-44 tag-link-position-28" style="font-size: 10.916666666667pt;" aria-label="Математика (23 элемента)" data-wpel-link="internal">Математика</a>
<a href="https://otus.ru/journal/tag/arhitektura-po/" class="tag-cloud-link tag-link-10 tag-link-position-29" style="font-size: 9.4583333333333pt;" aria-label="архитектура ПО (16 элементов)" data-wpel-link="internal">архитектура ПО</a>
<a href="https://otus.ru/journal/tag/bazy-dannyh-2/" class="tag-cloud-link tag-link-251 tag-link-position-30" style="font-size: 10.138888888889pt;" aria-label="базы данных (19 элементов)" data-wpel-link="internal">базы данных</a>
<a href="https://otus.ru/journal/tag/vebinar/" class="tag-cloud-link tag-link-201 tag-link-position-31" style="font-size: 13.930555555556pt;" aria-label="вебинар (48 элементов)" data-wpel-link="internal">вебинар</a>
<a href="https://otus.ru/journal/tag/dajdzhest/" class="tag-cloud-link tag-link-308 tag-link-position-32" style="font-size: 10.722222222222pt;" aria-label="дайджест (22 элемента)" data-wpel-link="internal">дайджест</a>
<a href="https://otus.ru/journal/tag/zapis-vebinara/" class="tag-cloud-link tag-link-226 tag-link-position-33" style="font-size: 14.902777777778pt;" aria-label="запись вебинара (61 элемент)" data-wpel-link="internal">запись вебинара</a>
<a href="https://otus.ru/journal/tag/zapis-uroka/" class="tag-cloud-link tag-link-272 tag-link-position-34" style="font-size: 16.069444444444pt;" aria-label="запись урока (80 элементов)" data-wpel-link="internal">запись урока</a>
<a href="https://otus.ru/journal/tag/informacionnaya-bezopasnost/" class="tag-cloud-link tag-link-232 tag-link-position-35" style="font-size: 10.138888888889pt;" aria-label="информационная безопасность (19 элементов)" data-wpel-link="internal">информационная безопасность</a>
<a href="https://otus.ru/journal/tag/karera-v-it/" class="tag-cloud-link tag-link-292 tag-link-position-36" style="font-size: 9.9444444444444pt;" aria-label="карьера в IT (18 элементов)" data-wpel-link="internal">карьера в IT</a>
<a href="https://otus.ru/journal/tag/podborka/" class="tag-cloud-link tag-link-7 tag-link-position-37" style="font-size: 12.666666666667pt;" aria-label="подборка (35 элементов)" data-wpel-link="internal">подборка</a>
<a href="https://otus.ru/journal/tag/podborka-statej/" class="tag-cloud-link tag-link-219 tag-link-position-38" style="font-size: 15.777777777778pt;" aria-label="подборка статей (75 элементов)" data-wpel-link="internal">подборка статей</a>
<a href="https://otus.ru/journal/tag/programmirovanie/" class="tag-cloud-link tag-link-65 tag-link-position-39" style="font-size: 22pt;" aria-label="программирование (332 элемента)" data-wpel-link="internal">программирование</a>
<a href="https://otus.ru/journal/tag/proekt/" class="tag-cloud-link tag-link-321 tag-link-position-40" style="font-size: 11.888888888889pt;" aria-label="проект (29 элементов)" data-wpel-link="internal">проект</a>
<a href="https://otus.ru/journal/tag/proektnaya-rabota/" class="tag-cloud-link tag-link-310 tag-link-position-41" style="font-size: 11.597222222222pt;" aria-label="проектная работа (27 элементов)" data-wpel-link="internal">проектная работа</a>
<a href="https://otus.ru/journal/tag/seti/" class="tag-cloud-link tag-link-181 tag-link-position-42" style="font-size: 12.958333333333pt;" aria-label="сети (38 элементов)" data-wpel-link="internal">сети</a>
<a href="https://otus.ru/journal/tag/testirovanie/" class="tag-cloud-link tag-link-69 tag-link-position-43" style="font-size: 13.930555555556pt;" aria-label="тестирование (48 элементов)" data-wpel-link="internal">тестирование</a>
<a href="https://otus.ru/journal/tag/upravlenie-komandoj/" class="tag-cloud-link tag-link-63 tag-link-position-44" style="font-size: 11.694444444444pt;" aria-label="управление командой (28 элементов)" data-wpel-link="internal">управление командой</a>
<a href="https://otus.ru/journal/tag/habr-2/" class="tag-cloud-link tag-link-203 tag-link-position-45" style="font-size: 13.930555555556pt;" aria-label="хабр (48 элементов)" data-wpel-link="internal">хабр</a></div>
</li>
</ul>
</div>
</aside>
</div> <!-- .ts-row -->
</div> <!-- .main -->
<footer class="main-footer dark bold">
<section class="lower-footer cf">
<div class="wrap">
<div class="links">
<div class="menu-menju-navykov-container"><ul id="menu-menju-navykov-1" class="menu"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10413"><a href="https://otus.ru/categories/programming/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Программирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10414"><a href="https://otus.ru/categories/architecture/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Архитектура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10415"><a href="https://otus.ru/categories/operations/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Инфраструктура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10416"><a href="https://otus.ru/categories/information-security-courses/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Безопасность<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10417"><a href="https://otus.ru/categories/data-science/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Data Science<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10418"><a href="https://otus.ru/categories/gamedev/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">GameDev<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10419"><a href="https://otus.ru/categories/marketing-business/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Управление<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10420"><a href="https://otus.ru/categories/analytics/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Аналитика и анализ<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10421"><a href="https://otus.ru/categories/testing/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Тестирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </div>
<p class="copyright"> © 2015-2026 OTUS </p>
<div class="to-top">
<a href="#" class="back-to-top"><i class="fa fa-angle-up"></i> Top</a>
</div>
</div>
</section>
</footer>
</div> <!-- .main-wrap -->
<div class="mobile-menu-container off-canvas" id="mobile-menu">
<a href="#" class="close"><i class="fa fa-times"></i></a>
<div class="logo">
</div>
<ul class="mobile-menu"></ul>
</div>
<div class="search-modal-wrap">
<div class="search-modal-box" role="dialog" aria-modal="true">
<form method="get" class="search-form" action="https://otus.ru/journal/">
<input type="search" class="search-field" name="s" placeholder="Search..." value="" required />
<button type="submit" class="search-submit visuallyhidden">Submit</button>
<p class="message">
Type above and press <em>Enter</em> to search. Press <em>Esc</em> to cancel. </p>
</form>
</div>
</div>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/clearfy/components/comments-plus/assets/js/url-span.js" id="wbcr-comments-plus-url-span-js"></script>
<script type="text/javascript" id="ez-toc-scroll-scriptjs-js-extra">
/* <![CDATA[ */
var eztoc_smooth_local = {"scroll_offset":"30"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/js/smooth_scroll.min.js" id="ez-toc-scroll-scriptjs-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/vendor/js-cookie/js.cookie.min.js" id="ez-toc-js-cookie-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/vendor/sticky-kit/jquery.sticky-kit.min.js" id="ez-toc-jquery-sticky-kit-js"></script>
<script type="text/javascript" id="ez-toc-js-js-extra">
/* <![CDATA[ */
var ezTOC = {"smooth_scroll":"1","visibility_hide_by_default":"","scroll_offset":"30","fallbackIcon":"<span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span>"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/js/front.min.js" id="ez-toc-js-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/custom-script.js" id="custom-script-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/magnific-popup.js" id="magnific-popup-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jquery.fitvids.js" id="jquery-fitvids-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/imagesloaded.min.js" id="imagesloaded-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/object-fit-images.js" id="object-fit-images-js"></script>
<script type="text/javascript" id="contentberg-theme-js-extra">
/* <![CDATA[ */
var Bunyad = {"custom_ajax_url":"\/journal\/osnovy-razrabotki-na-python\/"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/theme.js" id="contentberg-theme-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/theia-sticky-sidebar.js" id="theia-sticky-sidebar-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jquery.slick.js" id="jquery-slick-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jarallax.js" id="jarallax-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/masonry.min.js" id="masonry-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery.masonry.min.js" id="jquery-masonry-js"></script>
</body>
</html>
<!-- Cache served by breeze CACHE - Last modified: Tue, 10 Mar 2026 00:48:10 GMT -->