Python: функции
Пять минут на эту статью — и «Python: функции» станет понятнее. Внутри: теория без воды, пример, разбор задания и чек-лист самопроверки.
Что такое функции в Python
Когда программа разрастается, одинаковые действия начинают повторяться, а исправление одной ошибки превращается в поиск по десяткам строк. Функции помогают разложить задачу на понятные части: ты один раз описываешь действие, а затем вызываешь его столько раз, сколько нужно. Так код становится короче, аккуратнее и легче для проверки на уроках и экзамене.
Функция — это именованный блок команд, который выполняет определённую работу. У функции могут быть входные данные, или параметры, и результат, который она возвращает. В Python функцию обычно создают с помощью ключевого слова def. После имени ставятся круглые скобки и двоеточие, а команды записываются с отступом.
def greet(name):
print("Привет,", name)
greet("Оля")
# Привет, Оля
В примере name — параметр, а строка "Оля" — аргумент при вызове. Важно различать описание функции и её запуск: пока Python читает def, команды только запоминаются. Работа начинается в момент вызова по имени.
Давай функциям глагольные имена: calculate_sum, show_menu, find_max. По названию должно быть понятно, какое действие произойдёт.
Параметры и возвращаемое значение
Параметры позволяют передавать функции разные данные. Благодаря этому не приходится создавать отдельную функцию для каждого числа или имени. Например, функция вычисления площади прямоугольника получает длину и ширину, перемножает их и отдаёт ответ.
def rectangle_area(width, height):
return width × height
\( area = rectangle_area(5, 3) \)
print(area)
# 15
Команда return завершает работу функции и возвращает значение туда, где функция была вызвана. Полученный результат можно сохранить в переменную, вывести на экран или использовать в другом вычислении. Это отличается от print: print только показывает данные пользователю, но не передаёт их программе для дальнейшей работы.
У функции может быть несколько параметров. Их порядок при обычном вызове важен: первый аргумент попадёт в первый параметр, второй — во второй. Можно использовать и именные аргументы, тогда связь становится очевиднее.
def introduce(name, age):
return name + ": " + str(age)
text = introduce(age=14, name="Маша")
print(text)
Если значение параметра часто бывает одинаковым, задают значение по умолчанию: def power(number, degree=2):. Тогда степень можно не указывать.
Область видимости и порядок действий
Переменная, созданная внутри функции, обычно существует только внутри неё. Такая переменная называется локальной. После завершения функции обратиться к ней снаружи нельзя, поэтому результат лучше получать через return. Переменные, объявленные вне функций, являются внешними, но чрезмерно полагаться на них не стоит: код становится менее предсказуемым.
def make_message():
message = "Готово"
return message
\( answer = make_message() \)
print(answer)
Python выполняет функцию сверху вниз. Если внутри есть условие или цикл, они работают по обычным правилам, но отступы становятся особенно важными. Все строки тела функции должны иметь одинаковый отступ. После return следующие команды этой функции уже не выполняются.
Функция может возвращать несколько значений. На самом деле Python объединяет их в кортеж, который можно разложить по переменным.
def divide_parts(number, divisor):
\( whole = number // divisor \)
\( remainder = number \% divisor \)
return whole, remainder
\( q, r = divide_parts(17, 5) \)
print(q, r)
# 3 2
Такой приём полезен в задачах, где одновременно нужны частное и остаток.
Не путай return и print. Если функция должна участвовать в вычислении, почти всегда нужен именно return.
Разобранный пример: сумма чисел
Решим задачу: написать функцию, которая получает список чисел и возвращает сумму только положительных элементов. Здесь пригодятся цикл, условие и накопитель. Накопитель сначала равен нулю, затем к нему добавляются подходящие элементы.
def positive_sum(numbers):
\( total = 0 \)
for number in numbers:
if number > 0:
\( total = total + number \)
return total
\( values = [-4, 7, 0, 3, -2] \)
\( result = positive_sum(values) \)
print(result)
# 10
Разберём выполнение по шагам. Сначала список передаётся в параметр numbers, а total получает значение 0. Цикл рассматривает −4, 7, 0, 3 и −2 по очереди. Число −4 не проходит проверку. К 0 прибавляется 7, затем 0 ничего не меняет, после чего добавляется 3. Последнее отрицательное число пропускается. Функция возвращает 10, а переменная result сохраняет этот ответ.
Такую функцию легко проверить на отдельных случаях: пустой список должен дать 0, список только с отрицательными числами тоже даст 0, а один положительный элемент вернётся без изменений.
Для самостоятельной тренировки можно открыть бесплатную практику в личном кабинете и проверить решение на похожих задачах.
Типичные ошибки и полезные приёмы
Первая распространённая ошибка — забыть вызвать функцию. Описание с def само по себе ничего не выводит. Вторая — написать return без значения или вообще не вернуть результат. Тогда Python получит специальное значение None. Третья — нарушить отступ: строки тела функции должны быть вложены одинаково.
Ещё одна проблема — перепутать количество аргументов. Если функция ждёт два параметра, а передан один, возникнет ошибка. Перед вычислениями полезно проверить типы данных: строка и число не всегда складываются напрямую, поэтому для преобразования применяют int, float или str.
| Ошибка | Что произойдёт | Как исправить |
|---|---|---|
| Нет отступа | SyntaxError или IndentationError | Выровнять тело функции |
| Нет return | Результат равен None | Вернуть нужное значение |
| Перепутаны аргументы | Неверный ответ или ошибка | Проверить порядок параметров |
| Изменение внешней переменной | Сложнее понять код | Передавать данные параметрами |
Хорошая функция обычно делает одну понятную вещь. Если блок получился слишком длинным, его можно разделить на несколько небольших функций.
После теории попробуй зарегистрироваться и открыть личный кабинет: там удобно закреплять синтаксис небольшими заданиями.
Что запомнить
Функция создаётся через def, получает параметры и запускается вызовом по имени. Аргументы передают конкретные значения, а return возвращает результат. Локальные переменные живут внутри функции, отступы показывают границы блока, а одна функция должна решать одну ясную задачу.
Проверяй код на простых случаях: пустых данных, нуле, отрицательных числах и одном элементе. Если результат нужен для дальнейших вычислений, используй return, а не только print. Следующий шаг — зарегистрируйся и реши 5 заданий бесплатно, каждый раз объясняя себе, какие параметры получает функция и что именно она возвращает.
Что такое функция в Python?
Это именованный блок команд для отдельного действия. Его можно описать один раз, а затем вызывать с разными данными.
Чем параметр отличается от аргумента?
Параметр записывают в определении функции, а аргумент передают при конкретном вызове. Например, в def greet(name) name — параметр, а в greet("Оля") строка "Оля" — аргумент.
Почему функция возвращает None?
Обычно внутри нет команды return или она выполнена без значения. Добавь return с выражением, результат которого нужно получить.
Как закрепить тему после разбора?
Напиши несколько функций самостоятельно: для суммы, проверки чётности и поиска максимума. Затем протестируй их на обычных и граничных данных в бесплатной практике личного кабинета.
Не оставляйте тему «прочитанной»
Понимание — половина дела. Вторая — практика с обратной связью: личный кабинет Просто Урок покажет, где вы ошибаетесь, и подтянет слабые места.