Основы программирования на Python

Этот курс познакомит вас с базовыми концепциями языка Python. Вы изучите синтаксис, основные типы данных, управляющие конструкции и функции, что станет отличным стартом в мире разработки.

1. Введение в Python и базовая настройка окружения

Введение в Python и базовая настройка окружения

Язык программирования Python завоевал статус одного из самых востребованных инструментов в IT-индустрии благодаря своей лаконичности и универсальности. Это высокоуровневый язык программирования, что означает его максимальную приближенность к человеческому языку и абстрагирование от сложных аппаратных процессов компьютера, таких как прямое управление памятью или регистрами процессора. Разработанный Гвидо ван Россумом в 1991 году, этот язык изначально создавался с упором на удобство разработчика.

Например, чтобы вывести простой текст на экран в низкоуровневом языке, может потребоваться написать от 5 до 10 строк сложного кода с подключением системных библиотек и выделением памяти. В Python для этой же задачи достаточно ровно одной строки и 20 символов. Такая выразительность позволяет программистам тратить время на решение бизнес-задач, а не на борьбу с синтаксисом.

> Читаемость имеет значение. > > Дзен Python (PEP 20)

Интерпретируемость и выполнение кода

Фундаментальная особенность Python заключается в том, что он является интерпретируемым языком. В отличие от компилируемых языков, где весь исходный код заранее переводится в машинный бинарный файл, здесь используется специальная программа — интерпретатор. Он читает исходный код строка за строкой и сразу же выполняет его.

Эту разницу легко понять через аналогию с переводом текста. Компилятор работает как литературный переводчик: он берет целую книгу на английском языке, тратит месяц на перевод и выдает готовую книгу на русском. Читать готовую книгу можно быстро, но процесс перевода занимает много времени. Интерпретатор работает как синхронный переводчик на конференции: он слушает одну фразу и сразу ее переводит. Если спикер ошибется на середине выступления, перевод прервется именно в этот момент.

Если в скрипте из 1000 строк допущена синтаксическая ошибка на строке 500, интерпретатор успешно выполнит первые 499 строк и только потом остановит работу с сообщением об ошибке. Компилятор же вообще не позволит запустить программу, пока не будут исправлены все ошибки.

Сферы применения языка

Благодаря огромному сообществу разработчиков, язык оброс тысячами готовых инструментов для самых разных задач. Сегодня он является стандартом де-факто в нескольких крупных отраслях.

Анализ данных и машинное обучение: библиотеки Pandas, NumPy и TensorFlow* позволяют обрабатывать массивы данных из миллионов строк и обучать нейронные сети. Веб-разработка: фреймворки Django и FastAPI* используются для создания серверной части высоконагруженных сайтов и API. * Автоматизация и скрипты: системные администраторы пишут короткие программы для резервного копирования файлов, парсинга сайтов или рассылки отчетов.

| Характеристика | Python | C++ | Java | |---|---|---|---| | Скорость освоения | Высокая | Низкая | Средняя | | Тип выполнения | Интерпретируемый | Компилируемый | Компилируемый в байт-код | | Управление памятью | Автоматическое (сборщик мусора) | Ручное | Автоматическое | | Основная ниша | Data Science, Web, автоматизация | Игровые движки, драйверы | Корпоративные системы, Android |

Установка интерпретатора

Для того чтобы компьютер научился понимать код, необходимо установить официальный интерпретатор. Процесс установки немного отличается в зависимости от операционной системы, но базовый алгоритм остается неизменным.

  • Перейдите на официальный сайт python.org в раздел загрузок.
  • Скачайте последнюю стабильную версию (рекомендуется использовать версии 3.10 и выше).
  • Запустите установщик. На первом же экране критически важно отметить галочку Add Python to PATH.
  • Нажмите Install Now и дождитесь завершения процесса.
  • Переменная среды PATH указывает операционной системе, в каких папках следует искать исполняемые файлы. Если пропустить третий шаг, терминал не сможет распознать команду python, и вам придется каждый раз указывать полный путь к файлу на жестком диске (например, C:\Users\Name\AppData\Local\Programs\Python\python.exe), что крайне неудобно.

    Выбор среды разработки (IDE)

    Писать код можно даже в стандартном «Блокноте», но это неэффективно. Профессионалы используют интегрированные среды разработки (IDE) или продвинутые текстовые редакторы, которые подсвечивают синтаксис, автодополняют слова и помогают искать ошибки.

    IDLE* — поставляется вместе с интерпретатором по умолчанию. Подходит только для самых первых экспериментов и написания скриптов длиной до 50 строк. Visual Studio Code (VS Code*) — бесплатный и очень быстрый редактор от Microsoft. Требует установки дополнительных плагинов, но после настройки становится мощнейшим инструментом. PyCharm — профессиональная IDE от компании JetBrains. Версия Community* бесплатна и содержит всё необходимое для старта «из коробки», включая встроенный терминал и инструменты для работы с базами данных.

    Первая программа и синтаксис

    Одной из визитных карточек языка является отказ от фигурных скобок {} для выделения блоков кода. Вместо них используются пробелы или табуляция (отступы). Это принуждает разработчиков писать визуально чистый и структурированный код.

    В этом примере создаются две переменные: текстовая user_name и числовая user_age. Затем используется условный оператор. Обратите внимание на отступы перед функцией print() — по стандарту принято использовать ровно 4 пробела. Если убрать отступ, интерпретатор выдаст ошибку IndentationError.

    Управление пакетами и виртуальные окружения

    Базовая комплектация языка содержит множество полезных модулей (например, для работы с математикой или файловой системой), но настоящая сила кроется в сторонних библиотеках. Для их установки используется пакетный менеджер pip (Pip Installs Packages).

    Официальный репозиторий PyPI (Python Package Index) содержит более 400 000 готовых пакетов. Чтобы установить библиотеку для скачивания веб-страниц, достаточно открыть терминал и ввести одну команду:

    Однако установка всех библиотек в единую глобальную систему компьютера быстро приводит к хаосу. Представьте, что вы разрабатываете два проекта: первому нужна библиотека версии 1.0, а второму — версии 2.0. Глобально можно установить только одну версию.

    Для решения этой проблемы используются виртуальные окружения (venv). Это изолированные папки, внутри которых находится собственная копия интерпретатора и независимый набор библиотек. Создание виртуального окружения — обязательный шаг при старте любого нового проекта.

    Эта команда создаст в текущей директории папку my_project_env. После активации этого окружения все новые библиотеки, устанавливаемые через pip, будут сохраняться только внутри этой папки, не засоряя основную операционную систему и не конфликтуя с другими проектами.

    2. Переменные и базовые типы данных

    Переменные и базовые типы данных

    В прошлом материале мы написали первые строки кода, где использовали конструкцию вроде user_name = "Алексей". Компьютер успешно запомнил это имя и смог использовать его для вывода приветствия. Этот механизм сохранения информации является фундаментом любой программы, а сами контейнеры для хранения данных называются переменными.

    Переменная — это именованная область в оперативной памяти компьютера, куда мы можем положить какие-либо данные, чтобы позже обратиться к ним по имени. Самая простая и точная аналогия — это обычная картонная коробка, на которую вы наклеили стикер с надписью. Внутрь коробки можно положить число, текст или сложную структуру данных. Когда программе понадобятся эти данные, она найдет нужную коробку по надписи на стикере и достанет содержимое.

    В математике знак равенства означает тождество, например, говорит о том, что две величины одинаковы. В программировании символ = выполняет совершенно другую функцию — это оператор присваивания. Он дает компьютеру команду: «возьми то, что находится справа от знака равенства, и положи в переменную, имя которой указано слева».

    С точки зрения классической алгебры выражение не имеет смысла. Но в коде выше происходит следующее: интерпретатор берет текущее значение из коробки player_score (число 100), прибавляет к нему 50, а затем кладет новое значение (150) обратно в ту же самую коробку, затирая старые данные.

    Динамическая типизация

    Язык Python использует концепцию, которая называется динамическая типизация. Это означает, что при создании переменной вам не нужно заранее указывать, какой именно тип данных будет в ней храниться. Интерпретатор сам определяет это в момент выполнения кода, анализируя то, что вы пытаетесь в нее положить.

    В строго типизированных языках, таких как Java или C++, программист обязан заранее объявить форму коробки. Если вы сказали, что в переменной будет лежать целое число, вы уже никогда не сможете положить туда текст — программа выдаст ошибку. В Python одна и та же переменная может свободно менять свое содержимое и тип в процессе работы.

    > Программы должны писаться для людей, которые будут их читать, и лишь во вторую очередь — для машин, которые будут их выполнять. > > Харольд Абельсон, профессор MIT

    Правила именования переменных

    Чтобы код был читаемым и не вызывал сбоев, необходимо соблюдать правила создания имен. В Python есть строгие технические ограничения и негласные договоренности между разработчиками.

    Технические правила (при их нарушении код не запустится): * Имя может состоять только из латинских букв, цифр и символа подчеркивания _. * Имя не может начинаться с цифры. * Запрещено использовать пробелы и специальные символы (например, @, #, ` | Ошибка | Содержит спецсимвол age \geq 18$), этот текст необходимо пропустить через функцию int(), превратив его в полноценное число для математических операций.

    Понимание того, как данные хранятся в памяти и как они взаимодействуют друг с другом — это первый шаг к написанию сложной и безошибочной логики, к которой мы перейдем на следующем этапе.

    3. Управляющие конструкции: условные операторы и циклы

    Управляющие конструкции: условные операторы и циклы

    В предыдущих материалах мы научились сохранять данные в переменные и разобрались с базовыми типами, включая логический тип bool. До этого момента все наши программы выполнялись строго линейно: интерпретатор читал код сверху вниз, строка за строкой, не пропуская ни одной команды. Однако в реальном мире программы должны уметь принимать решения в зависимости от ситуации и многократно повторять рутинные действия.

    Механизмы, которые позволяют изменять стандартный порядок выполнения кода, называются управляющими конструкциями. К ним относятся условные операторы и циклы. Именно они превращают простой набор команд в «умный» алгоритм.

    Условный оператор if

    Базовая конструкция для принятия решений в Python — это оператор if (в переводе с английского — «если»). Он позволяет выполнить блок кода только в том случае, если заданное условие является истинным (равно True).

    Синтаксис условного оператора требует особого внимания. В отличие от многих других языков программирования, где блоки кода выделяются фигурными скобками, Python использует отступы.

    Обратите внимание на двоеточие в конце строки с условием. Оно сообщает интерпретатору, что дальше начнется вложенный блок кода. Все строки, которые должны выполниться при истинности условия, обязаны иметь одинаковый отступ (по стандарту PEP 8 — ровно 4 пробела). Как только отступ возвращается к исходному уровню, блок условия завершается.

    Расширение логики: else и elif

    Часто нам нужно не просто выполнить действие при истинном условии, но и предусмотреть альтернативный сценарий, если условие ложно. Для этого используется ключевое слово else («иначе»).

    Если возможных сценариев больше двух, на помощь приходит оператор elif (сокращение от else if — «иначе если»). Вы можете использовать любое количество блоков elif внутри одной конструкции.

    Программа проверяет условия сверху вниз. Как только она находит первое истинное условие, она выполняет соответствующий блок кода, а все остальные проверки игнорирует. Если temperature равна 15, сработает только второй блок, даже если бы ниже были другие подходящие условия.

    Операторы сравнения и логики

    Чтобы строить условия, необходимо уметь сравнивать значения. В Python для этого используются специальные операторы сравнения, которые всегда возвращают результат типа bool (True или False).

    * Проверка на равенство: (используется двойной знак равно, так как одиночный — это присваивание) * Проверка на неравенство: (в коде пишется как !=) * Строго больше: * Строго меньше: * Больше или равно: (в коде пишется как >=) * Меньше или равно: (в коде пишется как <=)

    Иногда логика требует проверки сразу нескольких условий одновременно. Для этого применяются логические операторы.

    | Оператор | Описание | Пример использования | |---|---|---| | and (И) | Возвращает True, только если оба условия истинны | if age >= 18 and has_ticket == True: | | or (ИЛИ) | Возвращает True, если хотя бы одно условие истинно | if day == "Суббота" or day == "Воскресенье": | | not (НЕ) | Инвертирует результат: True меняет на False и наоборот | if not is_banned: |

    Циклы: автоматизация повторяющихся действий

    Компьютеры созданы для того, чтобы выполнять рутинную работу быстро и без ошибок. Если вам нужно вывести на экран числа от 1 до 1000, писать тысячу строк с командой print() было бы нерационально.

    > Принцип DRY (Don't Repeat Yourself — Не повторяй себя) гласит: каждая часть знания должна иметь единственное, непротиворечивое и авторитетное представление в рамках системы. > > Энди Хант и Дэйв Томас, книга "Прагматичный программист"

    Для многократного выполнения одного и того же блока кода используются циклы.

    Цикл while

    Цикл while («пока») выполняет блок кода до тех пор, пока заданное условие остается истинным. Он идеально подходит для ситуаций, когда мы заранее не знаем, сколько именно повторений (итераций) потребуется.

    При работе с while крайне важно следить за тем, чтобы условие когда-нибудь стало ложным. Если забыть добавить строку apples_left = apples_left - 1, программа будет бесконечно печатать текст, так как количество яблок всегда будет больше нуля. Это называется бесконечным циклом, и он приводит к зависанию программы.

    Цикл for и функция range

    Цикл for («для») используется, когда количество итераций известно заранее или когда нам нужно пройтись по элементам какой-либо коллекции (например, строке текста).

    Чаще всего в связке с циклом for используется встроенная функция range(), которая генерирует последовательность чисел. Функция может принимать от одного до трех аргументов: range(старт, стоп, шаг).

    * range(5) сгенерирует числа от 0 до 4 (число 5 не включается). * range(1, 6) сгенерирует числа от 1 до 5. * range(0, 11, 2) сгенерирует четные числа от 0 до 10 (шаг равен 2).

    В этом примере переменная number автоматически создается циклом. На каждой итерации она принимает следующее значение из последовательности, сгенерированной функцией range().

    Управление итерациями: break и continue

    Иногда возникает необходимость вмешаться в работу цикла до его естественного завершения. Для этого существуют два специальных оператора:

  • break — немедленно прерывает выполнение всего цикла. Программа выходит из него и продолжает выполнять код, написанный после цикла.
  • continue — прерывает только текущую итерацию. Оставшийся в блоке код игнорируется, и цикл сразу переходит к следующему шагу.
  • Рассмотрим пример системы, которая ищет нужный файл среди загруженных, но при этом игнорирует системные файлы.

    Понимание условных операторов и циклов открывает двери к созданию по-настоящему сложных и полезных программ. Комбинируя ветвления и повторения, вы можете реализовать алгоритм любой сложности: от простого калькулятора до логики поведения персонажей в видеоигре.

    4. Структуры данных: списки, кортежи, словари и множества

    Структуры данных: списки, кортежи, словари и множества

    Программы редко работают с одиночными значениями. В реальных задачах разработчикам приходится обрабатывать тысячи пользователей, миллионы транзакций и бесконечные потоки показаний с датчиков. Если для каждого значения создавать отдельную переменную, код быстро станет нечитаемым и неработоспособным. Для хранения, организации и обработки больших объемов информации применяются структуры данных (или коллекции).

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

    Списки: универсальные контейнеры

    Список (list) — это упорядоченная и изменяемая коллекция элементов. Списки позволяют хранить данные любых типов, включая другие списки, и изменять их содержимое уже после создания. В коде они обозначаются квадратными скобками.

    Каждый элемент в списке имеет свой порядковый номер — индекс. Важнейшее правило программирования заключается в том, что отсчет индексов начинается с , а не с единицы. Таким образом, первый элемент имеет индекс , второй — , а последний элемент списка из элементов будет иметь индекс .

    Для управления содержимым списка Python предоставляет множество встроенных методов: * append(x) — добавляет элемент в самый конец списка; * insert(i, x) — вставляет элемент на указанную позицию; * remove(x) — удаляет первое совпадение элемента; * pop(i) — извлекает и удаляет элемент по индексу.

    Представим систему учета товаров на складе. Изначально у нас есть три товара. В течение дня поступает новый товар, а один из старых продается.

    В результате выполнения этого кода вечерний список будет содержать три элемента: "Ноутбук", "Клавиатура" и "Монитор". Списки идеально подходят для ситуаций, когда количество данных меняется во время работы программы.

    Кортежи: защита данных от изменений

    Кортеж (tuple) очень похож на список. Это тоже упорядоченная последовательность элементов, доступ к которым осуществляется по индексу. Главное отличие заключается в том, что кортежи являются неизменяемыми. После создания кортежа вы не сможете добавить в него новые элементы, удалить существующие или изменить их значения.

    Синтаксически кортежи создаются с помощью круглых скобок.

    Если вы попытаетесь выполнить команду office_location[0] = 56.0, интерпретатор выдаст ошибку. Зачем нужна структура данных, которую нельзя изменять?

    > Неизменяемость кортежей дает два важных преимущества: защиту данных от случайного изменения в процессе выполнения сложных алгоритмов и экономию оперативной памяти. Кортежи занимают меньше места и обрабатываются быстрее, чем списки. > > Официальная документация Python

    Кортежи часто используются для хранения логически связанных данных, которые не должны меняться: настроек подключения к базе данных, RGB-кодов цветов (например, (255, 0, 0) для красного) или географических координат.

    Словари: доступ по ключу

    Иногда доступ к данным по числовому индексу неудобен. Если у нас есть список с информацией о пользователе ["Анна", "Смирнова", 28, "anna@example.com"], нам придется запоминать, что возраст хранится под индексом , а email — под индексом . Это усложняет чтение кода.

    Для решения этой проблемы используется словарь (dict). Это коллекция, которая хранит данные в виде пар «ключ-значение». Вместо числовых индексов здесь используются уникальные ключи (обычно строки), по которым можно мгновенно получить соответствующее значение. Словари создаются с помощью фигурных скобок.

    Ключи в словаре должны быть уникальными и неизменяемыми типами данных (строками, числами или кортежами). Значения могут быть абсолютно любыми, включая другие списки и словари.

    Словари работают на основе механизма хеширования, что делает поиск данных невероятно быстрым. Независимо от того, содержит словарь десять элементов или десять миллионов, время поиска значения по ключу остается практически неизменным.

    Множества: уникальность превыше всего

    Множество (set) — это неупорядоченная коллекция, которая содержит только уникальные элементы. В множествах нет индексов и ключей, поэтому вы не можете обратиться к конкретному элементу. Главная задача этой структуры — быстрая проверка принадлежности элемента и устранение дубликатов.

    Множества также создаются с помощью фигурных скобок, но в отличие от словарей, они содержат одиночные значения, а не пары.

    Если у вас есть список с тысячами ID пользователей, среди которых много повторяющихся, вы можете мгновенно очистить его от дубликатов, просто преобразовав список в множество: unique_ids = set(all_ids).

    Кроме того, множества поддерживают классические математические операции:

  • Объединение (все элементы из обоих множеств);
  • Пересечение (только те элементы, которые есть в обоих множествах);
  • Разность (элементы, которые есть в первом множестве, но отсутствуют во втором).
  • Например, если у нас есть множество студентов, изучающих математику, и множество студентов, изучающих физику, мы можем легко найти тех, кто изучает оба предмета одновременно, используя операцию пересечения.

    Сравнение структур данных

    Чтобы легче ориентироваться в многообразии коллекций, рассмотрим их ключевые характеристики в сводной таблице.

    | Структура | Синтаксис | Изменяемость | Упорядоченность | Главная особенность | |---|---|---|---|---| | Список (list) | [1, 2, 3] | Да | Да | Универсальное хранилище данных с доступом по индексу. | | Кортеж (tuple) | (1, 2, 3) | Нет | Да | Защита данных от изменений, высокая скорость работы. | | Словарь (dict) | {"id": 1} | Да | Да (с версии 3.7) | Хранение данных в формате «ключ-значение». | | Множество (set) | {1, 2, 3} | Да | Нет | Гарантия уникальности всех элементов. |

    Умение комбинировать эти структуры — важный навык разработчика. Вы можете создать список, внутри которого будут храниться словари с профилями пользователей, а внутри каждого словаря — множество с уникальными тегами их интересов. Понимание того, как данные организованы в памяти, позволяет писать элегантный, быстрый и надежный код.

    5. Основы работы с функциями и модулями

    Основы работы с функциями и модулями

    По мере усложнения программ разработчики сталкиваются с проблемой дублирования кода. Если один и тот же алгоритм расчета скидки или форматирования текста нужно применить в десяти разных местах программы, копирование и вставка строк приведет к катастрофе. При обнаружении ошибки в формуле придется искать и исправлять ее во всех десяти местах. Чтобы избежать этого, в программировании используется фундаментальный принцип DRY (Don't Repeat Yourself — не повторяй себя).

    Для реализации этого принципа применяются функции — именованные блоки кода, которые решают определенную задачу и могут быть вызваны из любого места программы неограниченное количество раз. Функции позволяют разбить сложную монолитную программу на небольшие, логически завершенные и легко тестируемые фрагменты.

    > Дублирование кода — главный враг поддерживаемости. Принцип DRY гласит, что каждая часть знания должна иметь единственное, непротиворечивое и авторитетное представление в рамках системы. > > Энди Хант и Дэйв Томас, "Прагматичный программист"

    Создание функции и передача аргументов

    В Python создание функции начинается с ключевого слова def (от английского define — определить). За ним следует имя функции, написанное в стиле snake_case (слова в нижнем регистре, разделенные подчеркиванием), круглые скобки и двоеточие. Тело функции выделяется отступом в 4 пробела.

    Внутри круглых скобок указываются параметры — переменные, которые функция ожидает получить для своей работы. Когда мы вызываем функцию и передаем ей реальные данные, эти данные называются аргументами.

    В примере выше числа и передаются в функцию в том же порядке, в котором определены параметры. Это так называемые позиционные аргументы. Если перепутать их местами, логика программы сломается. Чтобы избежать путаницы при вызове функций с большим количеством параметров, используют именованные аргументы, явно указывая имя параметра: calculate_total_price(tax_rate=20, price=1000).

    Значения по умолчанию

    Часто некоторые параметры функции имеют стандартные значения, которые используются в большинстве случаев. Python позволяет задать значения по умолчанию прямо при определении функции. Если при вызове аргумент для такого параметра не передан, будет использовано стандартное значение.

    Важное правило синтаксиса: при определении функции параметры со значениями по умолчанию всегда должны располагаться после обязательных параметров. Иначе интерпретатор не сможет однозначно сопоставить переданные аргументы.

    Возврат результатов: оператор return

    Функции, которые просто выводят результат на экран с помощью print(), полезны для обучения, но редко применяются в реальной разработке. Обычно результат работы функции нужен для дальнейших вычислений. Чтобы функция отдала результат обратно в то место, откуда была вызвана, используется оператор return.

    Как только интерпретатор встречает return, выполнение функции немедленно прекращается, а указанное значение возвращается в основную программу.

    Если функция должна вернуть несколько значений, Python позволяет перечислить их через запятую. Под капотом интерпретатор автоматически упакует их в кортеж (tuple), который затем можно распаковать в отдельные переменные.

    Область видимости переменных

    Переменные, созданные внутри функции, называются локальными. Они существуют только в момент выполнения функции и автоматически уничтожаются после ее завершения. Основная программа не имеет доступа к локальным переменным.

    Переменные, созданные вне любых функций, называются глобальными. Они доступны для чтения из любого места программы. Однако попытка изменить глобальную переменную внутри функции без специального ключевого слова global приведет к созданию новой локальной переменной с таким же именем, что часто становится причиной трудноуловимых ошибок.

  • Локальная область: переменные внутри текущей функции.
  • Глобальная область: переменные на уровне основного файла скрипта.
  • Встроенная область: базовые функции языка (например, len(), print()).
  • Использование глобальных переменных для передачи данных между функциями считается плохой практикой. Функции должны быть независимыми: получать все необходимые данные через параметры и отдавать результат через return.

    Модули: организация масштабных проектов

    Когда количество функций в одном файле становится слишком большим (например, превышает несколько сотен строк), код становится трудно читать и поддерживать. В этот момент программу разделяют на модули.

    Модуль — это обычный файл с расширением .py, содержащий определения функций, классов и переменных, объединенных общей логикой. Например, все функции для работы с базой данных можно вынести в файл database.py, а функции для обработки платежей — в payments.py.

    Помимо собственных модулей, вместе с Python поставляется обширная стандартная библиотека — набор готовых модулей для решения типовых задач: работы с файловой системой, генерации случайных чисел, математических вычислений и многого другого.

    Рассмотрим пример использования встроенного модуля math для вычисления площади круга по классической геометрической формуле:

    Где — площадь круга, — математическая константа (примерно ), а — радиус круга.

    При радиусе расчет будет выглядеть так: . Функция вернет значение .

    Способы импорта модулей

    Язык предоставляет несколько способов подключения модулей в зависимости от того, как часто вы планируете использовать их содержимое и насколько длинные у них названия.

    | Синтаксис импорта | Описание | Пример использования в коде | |---|---|---| | import math | Импортирует модуль целиком. Требует указания имени модуля при вызове. | math.sqrt(16) | | from math import sqrt | Импортирует только конкретную функцию. Позволяет вызывать ее напрямую. | sqrt(16) | | import pandas as pd | Импортирует модуль и назначает ему короткий псевдоним (алиас). | pd.read_csv('data.csv') | | from math import * | Импортирует все функции модуля напрямую. Не рекомендуется, так как засоряет пространство имен. | sqrt(16) (без префикса) |

    Разделение программы на функции и модули — это переход от написания простых скриптов к промышленной разработке программного обеспечения. Модульная архитектура позволяет командам разработчиков работать над разными частями одного проекта одновременно, не мешая друг другу, и повторно использовать однажды написанный код в новых продуктах.