Найти в Дзене

Функции в Python: руководство для новичков

Функция в Python — это именованный блок кода, который можно вызывать многократно из разных частей программы. Представьте, что вы пишете программу для расчёта площади фигур. Без функций вам пришлось бы копировать код для каждой фигуры заново. С функциями же вы создаёте "инструмент" один раз и используете его когда угодно. Преимущества функций: В Python функции определяются с помощью ключевого слова def. Давайте разберём синтаксис. Синтаксис определения функции выглядит так: Пошаговый разбор: Вот простейший пример — функция, которая печатает приветствие: Пошаговый разбор кода: Если запустить: Эта функция ничего не возвращает, она просто выполняет действие. Для визуального понимания синтаксиса посмотрите на эту диаграмму: Параметры позволяют передавать данные в функцию. Они указываются в скобках при определении. Пример: функция для сложения двух чисел. Пошаговый разбор: Вызов: Что происходит при вызове? Параметры могут иметь значения по умолчанию: Вызов без аргумента: greet() → Привет, го
Оглавление

Что такое функции и зачем они нужны?

Функция в Python — это именованный блок кода, который можно вызывать многократно из разных частей программы. Представьте, что вы пишете программу для расчёта площади фигур. Без функций вам пришлось бы копировать код для каждой фигуры заново. С функциями же вы создаёте "инструмент" один раз и используете его когда угодно.

Преимущества функций:

  • Модульность: Код становится проще для чтения и отладки.
  • Переиспользование: Избегайте дублирования кода.
  • Абстракция: Скрывайте детали реализации от пользователя функции.
  • Организация: Легче работать с большими программами.

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

Определение простой функции

Синтаксис определения функции выглядит так:

Пошаговый разбор:

  1. def — ключевое слово, указывающее на начало определения функции.
  2. имя функции — уникальное имя (как переменная, но для функции). Используйте осмысленные имена, например, calculate_sum.
  3. (параметры) — список переменных, которые функция принимает на вход (может быть пустым).
  4. : двоеточие, после которого идёт отступ (tab).
  5. Тело функции — код с отступом.
  6. return — опционально, возвращает результат (если нет, функция возвращает None).

Вот простейший пример — функция, которая печатает приветствие:

-2

Пошаговый разбор кода:

  1. Определяем функцию say_hello без параметров.
  2. В теле функции одна строка: print("Привет, мир!").
  3. Чтобы вызвать функцию, пишем say_hello() (круглые скобки обязательны!).

Если запустить:

-3

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

Для визуального понимания синтаксиса посмотрите на эту диаграмму:

Функции с параметрами

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

Пример: функция для сложения двух чисел.

-4

Пошаговый разбор:

  1. Параметры a и b - это локальные переменные внутри функции.
  2. В теле: создаём result как сумму a и b.
  3. Печатаем результат.

Вызов:

-5

Что происходит при вызове?

  • Аргументы 5 и 3 присваиваются параметрам a=5, b=3.
  • Выполняется тело.
  • Функция завершается.

Параметры могут иметь значения по умолчанию:

-6

Вызов без аргумента: greet() → Привет, гость!
С аргументом: greet("Алексей") → Привет, Алексей!

-7

  1. Если аргумент не передан, name берёт значение "гость".
  2. Это удобно для гибкости.

Вот иллюстрация функции с параметрами:

-8

Возврат значений из функций

Часто функция должна не просто печатать, а возвращать результат для дальнейшего использования. Для этого используем return.

Пример: функция для вычисления квадрата числа.

-9

  1. Получаем параметр x.
  2. Вычисляем x * x.
  3. return передаёт это значение вызывающему коду.

Вызов:

-10

Вывод: 16

Без return функция вернёт None. Например:

-11

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

Переменные в функциях имеют локальную область видимости.

  • Локальные: Созданные внутри функции, видимы только там.
  • Глобальные: Объявленные вне функций, видимы везде.

Пример:

-12

Пошагово:

  1. global_var доступна везде.
  2. Внутри функции создаётся local_var, которая "умирает" после завершения функции.
  3. Чтобы изменить глобальную: global global_var; global_var += 1

Рекурсивные функции

Рекурсия - когда функция вызывает сама себя. Полезно для задач вроде факториала или обхода деревьев. На ЕГЭ часто встречается в задаче 16, иногда в 23.

Пример: факториал.

-13

Пошаговый разбор для factorial(4):

  1. n=4 → return 4 * factorial(3)
  2. n=3 → return 3 * factorial(2)
  3. n=2 → return 2 * factorial(1)
  4. n=1 → return 1 (базовый)
  5. Разворачивается: 21=2 → 32=6 → 4*6=24

Вывод: 24

Без базового случая - бесконечная рекурсия и ошибка!

Вот дерево рекурсии для факториала:

-14

-15

Запись на занятия здесь: https://t.me/nka39

Лямбда-функции (анонимные)

Лямбда - короткие функции без имени, для простых операций.
Синтаксис:

lambda параметры: выражение

Пример:

-16

Пошагово:

  1. lambda x: x * x — функция, принимающая x и возвращающая квадрат.
  2. Присваиваем переменной 5 для вызова.

В задачах ЕГЭ иногда требуется отсортировать массив записей (список кортежей или список списков) по нескольким критериям одновременно, причём по разным направлениям: например, сначала по возрастанию одного поля, а при равенстве - по убыванию другого.

Пример условия :

Дан список результатов участников олимпиады:

участники = [("Иванов", 85, 120), ("Петров", 92, 105), ("Сидоров", 85, 130), ("Козлов", 78, 140), ("Морозов", 92, 110)]

где каждый элемент - (фамилия, балл за тест, время в секундах)

Требуется отсортировать список так, чтобы:

  • участники шли по убыванию баллов за тест (чем больше - тем выше место),
  • при равенстве баллов - по возрастанию времени (чем меньше времени - тем лучше).

Решение с помощью lambda:

-17
-18

Пошаговое объяснение ключа сортировки:

-19
  • x - это текущий элемент списка, т.е. кортеж вида ("Фамилия", балл, время)
  • -x[1] - отрицание балла → чем больше балл, тем меньше отрицательное значение → сортировка по убыванию
  • x[2] - время без изменения → сортировка по возрастанию
  • Кортеж (-балл, время) сравнивается поэлементно: сначала по первому полю, при равенстве - по второму

Почему именно lambda здесь удобна?

  • Функция используется только один раз - в аргументе key=
  • Не нужно создавать отдельную именованную функцию
  • Код остаётся компактным и читаемым

Задания для самостоятельного выполнения

  1. Простая функция: Напишите функцию max_of_two(a, b), которая возвращает максимум из двух чисел. Протестируйте на примерах.
  2. С параметрами по умолчанию: Создайте функцию power(base, exponent=2), которая возводит base в степень exponent (по умолчанию квадрат). Вызовите с одним и двумя аргументами.
  3. Рекурсия: Напишите рекурсивную функцию для вычисления суммы цифр числа (например, для 123 → 1+2+3=6).
  4. Область видимости: Создайте глобальную переменную count = 0. Напишите функцию, которая увеличивает её на 1 и печатает. Вызовите несколько раз и проверьте значение вне функции.
  5. Лямбда: Используя лямбда, отфильтруйте список чисел, оставив только чётные: numbers = [1,2,3,4,5] → [2,4].

Если Вам информация была для Вас полезна, то можно подписаться на канал и поддержать автора, нажав на кнопку "Поддержать".

Подпишитесь на канал и научитесь решать все задания ЕГЭ по информатике!

Удачи на экзамене!

Записаться ко мне на занятия можно тут https://t.me/nka39

-20