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

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

1. Введение в Python: установка, настройка среды и первая программа

Введение в Python: установка, настройка среды и первая программа

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

Почему именно Python? Это один из самых популярных языков в мире. Его главная особенность — простота. Код на Python читается почти как обычный английский текст, что делает его идеальным выбором для новичков.

!Схема работы Python: от простого кода к сложным вычислениям

Что такое Python и как он работает?

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

Python — это интерпретируемый язык высокого уровня. Давайте разберем эти термины:

* Высокого уровня: Это значит, что язык заботится о сложных деталях (например, об управлении памятью) за вас. Вы сосредотачиваетесь на логике задачи, а не на «железе». * Интерпретируемый: Программа, написанная на Python, не превращается в машинный код целиком до запуска. Вместо этого специальная программа (интерпретатор) читает ваш код строку за строкой и сразу же выполняет его.

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

Установка Python

Прежде чем писать код, нам нужно установить интерпретатор Python на ваш компьютер. Мы будем использовать версию Python 3 (актуальные версии обычно начинаются с 3.10, 3.11 и выше).

Установка на Windows

  • Перейдите на официальный сайт python.org.
  • Нажмите большую желтую кнопку Download Python 3.x.x (цифры могут отличаться, качайте самую свежую).
  • Запустите скачанный файл установщика.
  • ВАЖНО: В появившемся окне обязательно поставьте галочку напротив пункта Add Python to PATH (Добавить Python в PATH). Если вы пропустите этот шаг, запускать программы будет сложнее.
  • Нажмите Install Now.
  • !Окно установки Python: не забудьте поставить галочку Add to PATH

    Установка на macOS

    На компьютерах Mac часто уже установлена старая версия Python (версия 2.7), но нам нужна версия 3. Самый простой способ — скачать установщик с того же сайта python.org и следовать инструкциям, как при установке обычной программы.

    Ваша первая среда разработки

    Где писать код? Можно писать его даже в «Блокноте», но это неудобно. Программисты используют специальные инструменты:

  • IDLE — простая среда, которая устанавливается вместе с Python. Мы начнем с неё.
  • Редакторы кода (VS Code, Sublime Text) — мощные инструменты с подсветкой и подсказками.
  • IDE (PyCharm) — профессиональные «комбайны» для больших проектов.
  • Для первого урока нам будет достаточно IDLE, так как она уже у вас есть после установки.

    Первая программа: Hello, World!

    В программировании есть традиция: первая программа на любом новом языке должна выводить на экран фразу «Hello, World!» («Привет, мир!»). Давайте не будем нарушать традиции.

    Запуск IDLE

    Найдите в своих программах IDLE (Python 3.x) и запустите её. Вы увидите окно с текстом, похожим на этот:

    Символы >>> — это приглашение к вводу. Это интерактивный режим. Здесь Python ждет вашу команду.

    Пишем код

    Введите следующую команду прямо после >>> и нажмите Enter:

    Если вы все сделали правильно, на следующей строке появится:

    Поздравляю! Вы написали свою первую программу.

    Разбор полетов: что мы написали?

    Давайте разберем эту строку по косточкам:

  • print — это функция. Функция — это команда, которая выполняет определенное действие. В данном случае она «печатает» (выводит) текст на экран.
  • (...)круглые скобки. В Python скобки после имени функции обязательны. Внутри скобок мы передаем то, что именно нужно напечатать.
  • "..."кавычки. Текст в программировании называется строкой. Чтобы компьютер понял, что Hello, World! — это просто текст, а не команда, мы обязаны заключить его в кавычки. Можно использовать как двойные ", так и одинарные '.
  • > Важно: Python чувствителен к регистру. print, Print и PRINT — это три разные вещи для компьютера. Команда вывода пишется только маленькими буквами: print.

    Файловый режим (Script mode)

    Интерактивный режим (где >>>) хорош для экспериментов, но плох для создания программ. Как только вы закроете окно, ваш код исчезнет. Настоящие программы сохраняются в файлах.

    Давайте создадим файл с кодом:

  • В IDLE нажмите File -> New File (Файл -> Новый файл). Откроется пустое окно без >>>.
  • Напишите в нем тот же код:
  • Сохраните файл: File -> Save. Назовите его first_program.py. Обратите внимание на расширение .py — оно говорит системе, что внутри находится код Python.
  • Запустите программу: нажмите Run -> Run Module (или клавишу F5).
  • В главном окне IDLE вы увидите результат выполнения обеих строк сразу.

    Синтаксис: правила языка

    У каждого языка есть грамматика. В программировании это называется синтаксис. Если вы нарушите правила, Python выдаст ошибку (SyntaxError).

    1. Отступы (Indentation)

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

    Пока мы пишем простые команды друг за другом, отступы не нужны. Но если вы случайно поставите пробел в начале строки, получите ошибку.

    Пример неправильного кода:

    Python скажет: IndentationError: unexpected indent (Ошибка отступа: неожиданный отступ). Запомните: код должен начинаться с самого начала строки, если нет особой причины для сдвига (о причинах мы поговорим в следующих уроках).

    2. Комментарии

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

    В Python комментарии начинаются с символа решетки #.

    Типичные ошибки новичка

    Не пугайтесь ошибок. Программирование — это искусство исправления ошибок. Вот самые частые из них на старте:

    * Забыли скобку: print("Текст" приведет к ошибке. * Забыли кавычку: print("Текст) — компьютер не поймет, где заканчивается текст. * Разные кавычки: print("Текст') — начинать и заканчивать строку нужно одинаковыми кавычками. * Опечатки в командах: prnt("...") — компьютер не знает такой команды.

    Заключение

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

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

    2. Переменные и типы данных: числа, строки и базовые операции

    Переменные и типы данных: числа, строки и базовые операции

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

    Представьте, что вы решаете сложную математическую задачу. Вы держите в голове промежуточные числа. Компьютеру тоже нужно «место в голове» для хранения данных. Это место называется оперативной памятью, а способом доступа к ней служат переменные.

    !Переменные работают как подписанные коробки, в которых хранятся данные.

    Что такое переменная?

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

    Чтобы создать переменную в Python, используется знак равенства =. Это называется операцией присваивания.

    Здесь мы создали три переменные:

  • В коробку с именем user_name мы положили строку "Alice".
  • В коробку age положили число 25.
  • В коробку score положили число 100.
  • > Важно: В программировании знак = означает не «равно» (как в математике), а «присвоить». Мы берем то, что справа, и кладем в то, что слева.

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

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

  • Только латиница, цифры и подчеркивание. Имя может состоять из букв (a-z, A-Z), цифр (0-9) и символа _.
  • Не начинать с цифры. 1st_place — ошибка, place_1 — правильно.
  • Без пробелов. Если имя состоит из нескольких слов, используйте подчеркивание: my_favorite_color.
  • Регистр важен. Score, score и SCORE — это три разные переменные.
  • В Python принято использовать стиль snake_case (змеиный регистр): все буквы маленькие, слова разделяются подчеркиванием.

    Типы данных

    В реальной жизни мы различаем типы информации: телефонный номер, имя человека, цена товара. Python тоже различает данные. Это нужно, чтобы понимать, какие операции можно с ними совершать (например, нельзя умножить слово «Привет» на слово «Мир», но можно умножить два числа).

    Рассмотрим три базовых типа данных:

    1. Целые числа (Integer или int)

    Это числа без дробной части: 5, -10, 0, 100500. Они используются для счета предметов, количества пользователей, индексов и так далее.

    2. Числа с плавающей точкой (Float)

    Это дробные числа. В программировании для разделения целой и дробной части используется точка, а не запятая.

    Если вы напишете 3,14 (с запятой), Python подумает, что это два разных числа, а не одно дробное.

    3. Строки (String или str)

    Строка — это любой текст, заключенный в кавычки. Мы уже сталкивались с ними в print("Hello").

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

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

    Более того, одна и та же переменная может менять свой тип в процессе работы программы (хотя делать так специально не рекомендуется, это путает).

    Чтобы узнать, какой тип данных хранится в переменной прямо сейчас, можно использовать функцию type():

    Базовые математические операции

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

    Основные операторы

    | Операция | Символ | Пример | Результат | | :--- | :---: | :--- | :--- | | Сложение | + | 5 + 3 | 8 | | Вычитание | - | 10 - 2 | 8 | | Умножение | | 4 2 | 8 | | Деление | / | 16 / 2 | 8.0 |

    Обратите внимание: обычное деление / всегда возвращает число с плавающей точкой (float), даже если числа делятся нацело.

    Продвинутые операторы

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

    1. Целочисленное деление (//) Отбрасывает дробную часть, оставляя только целое число.

    Где — частное (результат), — делимое, — делитель. Например, (потому что 2 влезает в 7 три раза).

    2. Остаток от деления (%) Возвращает то, что осталось после целочисленного деления. Это очень полезная операция, например, для проверки числа на четность.

    Где — остаток, — делимое, — делитель. Например, (так как ).

    3. Возведение в степень ()** Используется двойная звездочка.

    Где — результат, — основание степени, — показатель степени. В коде это выглядит как x ** n.

    Пример кода с операциями:

    Операции со строками

    Строки в Python тоже можно «складывать» и «умножать». Это работает немного иначе, чем с числами.

    Конкатенация (Сложение строк)

    Знак + склеивает две строки в одну.

    > Внимание: Нельзя сложить число и строку ("Age: " + 25 вызовет ошибку). Сначала нужно превратить число в строку.

    Дублирование (Умножение строки на число)

    Знак * повторяет строку указанное количество раз.

    Преобразование типов (Casting)

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

    * int() — превращает в целое число. * float() — превращает в дробное число. * str() — превращает в строку.

    Пример:

    Ввод данных: функция input()

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

    Когда программа доходит до input(), она останавливается и ждет, пока вы введете текст и нажмете Enter. Введенный текст сохраняется в переменную name.

    Важнейшее правило: Функция input() всегда возвращает строку (str). Даже если вы введете цифры, для Python это будет текст.

    Если вы хотите запросить число и использовать его в математике, результат ввода нужно сразу преобразовать:

    Если бы мы не использовали int(), то при вводе 5 и 10 мы получили бы результат 510 (склеивание строк), а не 15 (сложение чисел).

    Заключение

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

    В следующем уроке мы научим нашу программу принимать решения. Мы разберем логические операции и условные конструкции (if/else), чтобы код мог реагировать по-разному в зависимости от ситуации.

    3. Управление потоком: условные операторы if-else и циклы for, while

    Управление потоком: условные операторы if-else и циклы for, while

    В предыдущих уроках мы научились создавать переменные и хранить в них данные. Однако до сих пор наши программы были линейными: они выполнялись строго сверху вниз, строка за строкой, без возможности выбора или повторения действий. Но реальная жизнь не всегда линейна. Иногда нам нужно принять решение («Если пойдет дождь, я возьму зонт») или повторить действие несколько раз («Помыть 5 тарелок»).

    Сегодня мы вдохнем жизнь в наши программы. Мы научим их думать (принимать решения) и работать эффективно (автоматизировать рутину через повторения). Это называется управлением потоком выполнения (Control Flow).

    !Иллюстрация ветвления программы и циклического выполнения кода

    Логика компьютера: Истина и Ложь

    Прежде чем учить программу принимать решения, нужно понять, как компьютер видит мир. Для компьютера любое утверждение может быть либо истинным (True), либо ложным (False). Третьего не дано.

    В Python для этого существует специальный тип данных — bool (булевый тип). У него всего два значения:

    * True (Истина) * False (Ложь)

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

    Чтобы получить эти значения, мы обычно сравниваем что-то с чем-то. Вот основные инструменты для сравнения:

    | Оператор | Значение | Пример | Результат | | :---: | :--- | :--- | :--- | | == | Равно | 5 == 5 | True | | != | Не равно | 5 != 3 | True | | > | Больше | 10 > 20 | False | | < | Меньше | 1 < 5 | True | | >= | Больше или равно | 10 >= 10 | True | | <= | Меньше или равно | 7 <= 6 | False |

    > Внимание: Новички часто путают оператор присваивания = (положить значение в переменную) и оператор сравнения == (проверить, равны ли значения). Запомните: одно равно — это действие, два равно — это вопрос.

    Условные операторы: if, elif, else

    Теперь, когда мы умеем задавать вопросы, давайте научим программу действовать в зависимости от ответов. Главный инструмент здесь — оператор if (если).

    Простая проверка (if)

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

    Математически это условие можно записать так:

    Где — это переменная возраста, — оператор сравнения «больше или равно», а — пороговое значение.

    В коде это выглядит так:

    Обратите внимание на отступы (4 пробела) перед строками print внутри блока if. В Python отступы показывают, какой код относится к условию. Если условие age >= 18 истинно (True), то выполнятся строки с отступом. Если ложно (False) — программа их пропустит.

    Альтернатива (else)

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

    Здесь нет варианта, при котором ничего не произойдет. Либо сработает блок if, либо блок else.

    Множественный выбор (elif)

    Иногда вариантов больше двух. Например, в игре персонаж может пойти налево, направо или прямо. Для этого используется elif (сокращение от else if — «иначе если»).

    Python проверяет условия сверху вниз. Как только он находит первое True, он выполняет соответствующий блок кода и выходит из всей конструкции. Остальные проверки игнорируются.

    !Визуализация логики работы конструкции if-elif-else

    Циклы: автоматизация повторений

    Представьте, что вам нужно вывести фразу «Я не буду писать код без отступов» 100 раз. Копировать строку print 100 раз — плохая идея. Если нужно будет изменить текст, придется править 100 строк.

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

    Цикл while (Пока)

    Цикл while работает очень похоже на if. Разница лишь в том, что if выполняет код один раз, а while повторяет его снова и снова, пока условие остается истинным.

    Как это работает:

  • Проверяется условие count <= 5 (1 <= 5? Да).
  • Выполняется тело цикла (печать и увеличение count).
  • Программа возвращается к шагу 1.
  • Это повторяется, пока count не станет равным 6. Условие 6 <= 5 станет False, и цикл остановится.
  • #### Опасность: Бесконечный цикл

    Если вы забудете строку count = count + 1, переменная count всегда будет равна 1. Условие 1 <= 5 всегда будет истинным. Программа зависнет, бесконечно печатая текст. Это называется бесконечным циклом. Чтобы прервать такую программу, обычно нужно нажать Ctrl+C.

    Цикл for (Для)

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

    В Python цикл for перебирает элементы последовательности (например, строки или списка).

    Результат:

    Здесь переменная letter на каждом шаге цикла автоматически принимает значение следующей буквы из строки name.

    Функция range()

    Чаще всего for используют в паре с функцией range() (диапазон), чтобы создать последовательность чисел.

    Формула использования функции выглядит так:

    Где — создаваемая последовательность чисел, — начальное число (включительно), — конечное число (не включительно!), — шаг изменения (по умолчанию 1).

    Примеры:

  • Простой счетчик:
  • Выведет: 0, 1, 2, 3, 4. (По умолчанию старт с 0, до 5 не доходим).

  • От и до:
  • Выведет: 2, 3, 4, 5.

  • С шагом:
  • Выведет четные числа: 0, 2, 4, 6, 8, 10.

    Управление внутри циклов: break и continue

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

    break (Прервать)

    Команда break немедленно останавливает цикл, даже если условие все еще истинно или элементы не закончились.

    Пример: Ищем букву 'а' в слове и останавливаемся, как только нашли.

    continue (Продолжить)

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

    Пример: Распечатать все числа от 1 до 5, кроме 3.

    Результат: 1, 2, 4, 5.

    Вложенные конструкции

    Вы можете вкладывать циклы в условия, условия в циклы и даже циклы в циклы. Главное — следить за отступами.

    В этом примере для каждого i (1, 2, 3) полностью прокручивается внутренний цикл с j (1, 2, 3).

    Заключение

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

    Мы изучили:

  • Логические выражения: True, False и операторы сравнения.
  • Ветвление: if, elif, else позволяют программе выбирать путь.
  • Циклы: while и for позволяют повторять код.
  • Управление циклом: break и continue дают тонкий контроль над повторениями.
  • В следующем уроке мы узнаем, как группировать данные более эффективно, изучив списки (Lists) — одну из самых мощных структур данных в Python.

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

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

    В прошлых уроках мы научились хранить данные в переменных. Но что делать, если данных много? Представьте, что вам нужно сохранить список покупок из 50 товаров. Создавать 50 переменных (item1, item2, item3...) — это неудобно, долго и неэффективно.

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

    !Сравнение структур данных с реальными предметами хранения.

    1. Списки (Lists)

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

    Главная особенность списка — он изменяемый (mutable). Это значит, что вы можете добавлять, удалять и менять элементы после создания списка.

    Создание списка

    Списки создаются с помощью квадратных скобок [].

    Индексы: как достать элемент?

    Элементы в списке пронумерованы. Этот номер называется индексом. Важно запомнить главное правило программиста: счет начинается с нуля.

    Если у нас есть список , то доступ к элементу осуществляется по формуле:

    Где — полученный элемент, — сам список, а — порядковый номер (индекс) элемента.

    Python также поддерживает отрицательные индексы. Это удобный способ обратиться к элементам с конца списка. -1 — это последний элемент, -2 — предпоследний.

    Изменение списка

    Так как списки изменяемы, мы можем перезаписать любой элемент:

    Методы списков

    У списков есть встроенные функции (методы) для управления данными:

    * append(item) — добавляет элемент в конец списка. * insert(index, item) — вставляет элемент на указанную позицию. * pop(index) — удаляет элемент по индексу и возвращает его (если индекс не указан, удаляет последний). * remove(value) — удаляет первый найденный элемент с указанным значением.

    2. Кортежи (Tuples)

    Кортеж — это брат-близнец списка, но с одним важным отличием: он неизменяемый (immutable). После того как вы создали кортеж, вы не можете добавить, удалить или изменить в нем элементы.

    Зачем это нужно?

  • Защита данных: Вы гарантируете, что никто случайно не сломает последовательность.
  • Скорость: Кортежи работают немного быстрее списков и занимают меньше памяти.
  • Создание кортежа

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

    Попытка изменить кортеж приведет к ошибке:

    > Интересный факт: Скобки при создании кортежа часто можно опустить. Python поймет вас по запятым: my_tuple = 1, 2, 3.

    3. Словари (Dictionaries)

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

    Словарь хранит пары «Ключ: Значение» (Key-Value). Ключи должны быть уникальными.

    Создание словаря

    Словари создаются с помощью фигурных скобок {}.

    Доступ к данным

    Мы обращаемся к значению, указывая ключ в квадратных скобках:

    !Визуализация связи ключей и значений в словаре.

    Изменение и добавление

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

    4. Множества (Sets)

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

    Если вы попытаетесь добавить в множество элемент, который там уже есть, Python просто проигнорирует это действие.

    Создание множества

    Используются фигурные скобки {}, как в словарях, но без двоеточий, или функция set().

    Математика множеств

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

    Рассмотрим операцию объединения (Union). Формула выглядит так:

    Где — результирующее множество, и — исходные множества, а символ означает объединение (все элементы из обоих множеств).

    В коде это делается так:

    Как выбрать структуру данных?

    Новичку бывает сложно понять, что использовать. Вот простая шпаргалка:

    | Структура | Синтаксис | Упорядоченность | Изменяемость | Уникальность | Для чего использовать? | | :--- | :---: | :---: | :---: | :---: | :--- | | Список | [] | Да | Да | Нет | Хранение набора данных, который будет меняться. | | Кортеж | () | Да | Нет | Нет | Хранение данных, которые нельзя менять (настройки, координаты). | | Словарь | {k:v} | Нет* | Да | Ключи — да | Хранение данных с логическими связями (профиль пользователя). | | Множество | {} | Нет | Да | Да | Удаление дубликатов, математические операции. |

    Примечание: Начиная с Python 3.7, словари сохраняют порядок вставки, но исторически они считаются неупорядоченными.

    Итерация по структурам

    Все эти структуры отлично работают с циклом for, который мы изучили в прошлом уроке.

    Заключение

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

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

    5. Функции и модули: создание собственных функций и использование библиотек

    Функции и модули: создание собственных функций и использование библиотек

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

    Представьте, что вы пишете программу для интернет-магазина. Вам нужно рассчитать налог на товар в корзине. Вы пишете формулу. Затем вам нужно рассчитать налог для стоимости доставки. Вы снова пишете ту же формулу. А потом — для скидочного купона. Если налоговая ставка изменится, вам придется искать и исправлять этот код в трех разных местах.

    В программировании есть золотое правило: DRY (Don't Repeat Yourself — «Не повторяйся»). Чтобы следовать этому правилу, мы используем функции.

    !Функция работает как завод: принимает сырье, обрабатывает его и выдает результат.

    Что такое функция?

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

    Мы уже использовали встроенные функции Python: print(), input(), len(), type(). Теперь пришло время создавать свои собственные.

    Анатомия функции

    Создание функции начинается с ключевого слова def (от английского define — определить).

    Разберем этот код:

  • def — команда Python: «Я создаю функцию».
  • say_hello — имя функции. Правила именования такие же, как у переменных (snake_case: маленькие буквы, подчеркивания).
  • () — скобки. В них могут быть параметры (об этом ниже), но даже если их нет, скобки обязательны.
  • : — двоеточие означает начало блока кода.
  • Отступы — все, что сдвинуто вправо, является телом функции.
  • Вызов функции

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

    Аргументы и параметры: передача данных

    Функция say_hello() скучная — она всегда говорит одно и то же. Чтобы функция была гибкой, мы можем передавать в неё данные. Эти данные называются аргументами.

    Здесь name — это параметр (переменная внутри функции), а "Алиса" и "Боб" — это аргументы (конкретные значения, которые мы передаем при вызове).

    Несколько аргументов

    Функция может принимать сколько угодно параметров. Они перечисляются через запятую.

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

    Иногда удобно иметь значение «на всякий случай», если пользователь ничего не передал.

    Возврат значения: return

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

    Для этого используется ключевое слово return (вернуть).

    Рассмотрим пример с математической формулой площади круга:

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

    > Важно: return — это конец функции. Как только Python видит return, он выходит из функции и возвращает значение. Любой код, написанный после return (внутри той же функции), никогда не выполнится.

    print против return

    Новички часто путают эти команды. Запомните аналогию: * print() — это как показать картинку блюда клиенту. Он видит её, но не может съесть. * return — это как отдать готовое блюдо клиенту в руки. Он может его съесть, продать или положить в холодильник.

    Если функция ничего не возвращает через return, она неявно возвращает специальное значение None (ничего).

    Область видимости (Scope)

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

    Это сделано для безопасности: чтобы разные функции случайно не испортили переменные друг друга.

    Модули: использование чужого кода

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

    Модуль — это просто файл с расширением .py, содержащий функции и переменные.

    Импорт модулей

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

    #### 1. Модуль math

    В Python есть встроенный модуль для математики.

    #### 2. Модуль random

    Очень полезен для игр и симуляций.

    #### 3. Модуль datetime

    Для работы с датами и временем.

    Варианты импорта

    Иногда писать название модуля каждый раз (math.sqrt, math.pi) долго. Можно импортировать конкретные функции:

    Или дать модулю псевдоним (короткое имя):

    Создание собственных модулей

    Вы можете создавать свои модули. Это просто!

  • Создайте файл my_utils.py.
  • Напишите в нем функцию:
  • Создайте второй файл main.py в той же папке.
  • Импортируйте первый файл:
  • Это позволяет разбивать большие программы на маленькие, понятные файлы.

    Внешние библиотеки (PyPI)

    Кроме встроенных модулей (Standard Library), существуют тысячи библиотек, написанных сообществом. Они хранятся в каталоге PyPI (Python Package Index).

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

    Пример команды в терминале:

    После установки вы сможете писать import requests в своем коде и скачивать страницы из интернета одной строкой.

    Заключение

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

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