Представьте, что вы пишете программу для интернет-магазина. Вам нужно несколько раз рассчитать стоимость заказа с учетом скидки, проверить корректность введенного номера телефона, отформатировать дату заказа, приветствовать пользователя при входе. Если каждый раз писать один и тот же код заново, программа станет огромной, трудночитаемой и сложной для поддержки. Что если изменить формулу расчета скидки? Придется искать и править код в десятке мест. Именно для решения этих проблем в программировании существуют функции.
Функция — это именованный блок кода, который выполняет определенную задачу. Вы можете написать функцию один раз, а затем вызывать её столько раз, сколько нужно, передавая разные входные данные (аргументы) и получая результат. Это не только сокращает объем кода, но и делает его более структурированным, понятным и легким для изменений. Если нужно изменить логику работы, достаточно отредактировать код функции в одном месте.
В этом уроке мы начнем изучение функций — важнейшего инструмента для организации кода. Вы узнаете, что такое функция, как её определить с помощью ключевого слова def, и как вызывать её для выполнения. Мы подробно разберем разницу между параметрами (переменные в определении функции) и аргументами (значения, которые передаются при вызове). Научимся передавать данные в функцию разными способами: позиционные аргументы (порядок важен), именованные аргументы (порядок не важен, вызываем по имени), а также задавать значения по умолчанию для параметров, чтобы функция могла работать даже без явной передачи аргумента.
Поймем, зачем нужен оператор return. Он позволяет функции вернуть результат своей работы, который можно сохранить в переменную или использовать в других вычислениях. Вы узнаете, что функция без return возвращает специальное значение None, и как это может влиять на поведение программы.
Особое внимание уделим области видимости переменных. Вы поймете, что переменные, созданные внутри функции (локальные), не видны снаружи — это защищает данные от случайных изменений. Но иногда нужно использовать глобальные переменные внутри функции — для этого существует ключевое слово global. Мы разберем, когда это необходимо и как избежать ошибок.
Также научимся документировать функции с помощью docstring — строк документации, которые описывают назначение функции, её параметры и возвращаемое значение. Это важная практика, которая делает код понятным для других разработчиков (и для вас самих через несколько месяцев). Документацию можно посмотреть с помощью встроенной функции help().
Все примеры будут максимально практичными: создадим функции для приветствия пользователя, вычисления площади прямоугольника, проверки надежности пароля, форматирования даты и многое другое. К концу урока вы будете уверенно создавать свои функции и понимать, как правильно организовать код с их помощью, что станет фундаментом для дальнейшего изучения более сложных тем.