Что такое функция в Python? На занятиях в Стартории это обычно поясняется так. Ребёнок пишет формулу площади треугольника, потом копирует её для второго треугольника. А к третьему повтору спрашивает: а можно объяснить это компьютеру один раз? Можно — и именно поэтому в программировании появился такой инструмент.
На бумаге идея кажется скучной. А на практике — это первый момент, когда ученик перестаёт писать код построчно и начинает мыслить блоками. Дальше разберём, как устроен такой блок изнутри и почему без него сложно представить взрослую программу.
Что такое функция в Питоне простыми словами? Это блок (block) кода с собственным именем, который выполняет одну конкретную задачу. Внутри может быть одна строка или десяток связанных инструкций — программа воспринимает их как единое целое.
Такой блок можно вызвать снова в любом месте программы, не переписывая его заново. Ученики, которые только начинают писать функции в Питоне, часто путают такой блок с обычной последовательностью команд. Разница именно в возможности повторного вызова.
Def в Python — что это за слово, если перевести дословно? Оно происходит от английского define — «определять». Именно этим ключевым словом начинается любое определение в языке программирования.
После def указывается имя, скобки для параметров и двоеточие, которое открывает тело блока. Дальше строки кода пишутся с отступом — так интерпретатор понимает, где заканчивается этот блок.
Что означает def в Python, проще всего увидеть на конкретном примере. Возьмём простую задачу — сложить два числа и получить результат:
def summa(a, b):
result = a + b
return result
Здесь используется имя summa, а в скобках перечислены два параметра. За создание какой функции отвечает конструкция def в этом коде? Она объявляет summa, которая принимает два числа и возвращает их сумму. Слово def — это не имя, а команда, с которой начинается любое определение в программе на Python.
В скобках после имени перечисляются параметры — своего рода пустые места для будущих данных. При вызове на место параметров подставляются конкретные значения, которые называют аргументами. В примере выше a и b — параметры, а числа при вызове — уже аргументы.
Использовать понятные имена параметров — хорошая привычка, которая экономит время при чтении кода в будущем. Мы в Стартории советуем ученикам сразу давать параметрам осмысленные имена, а не просто x и y.
Имя стоит выбирать так, чтобы оно объясняло, что именно происходит внутри блока. Например, summa понятнее, чем f1 или my_func. Хорошее имя — это не формальность, а ключевой навык, который экономит время при чтении кода спустя месяц после написания.
Мы советуем ученикам использовать глаголы для действий и существительные — для вычислений. Такой подход быстро становится привычкой и заметно облегчает работу над более сложными программами.
Ключевое слово return нужно, чтобы возвращать результат наружу, в остальную часть программы. Без этого слова блок кода может выполнить действие внутри себя, но ничего не передаст дальше.
Например, вот код, который просто печатает приветствие и ничего не возвращает:
def greet(name):
print("Привет, " + name + "!")
Он выполнит действие на экране, но ничего не передаст в остальную программу — а значит, greet(name) нельзя использовать в дальнейших вычислениях.
Разница между «показать» и «вернуть» — то, на понимание чего иногда уходит целое занятие. Как только ученик разбирается в этой разнице, дальнейший код начинает получаться увереннее.
Результат может быть не только числом, но и текстом, списком или логическим значением — тип ничем не ограничен.
Как вызвать функцию в Питоне, если она уже определена выше по коду? Достаточно написать её имя, а в скобках указать нужные аргументы. Вызов summa(5, 3) вернёт число 8, и это значение можно сразу использовать дальше.
Вызывать её можно сколько угодно раз в разных частях программы — и каждый раз результат будет пересчитываться заново. В языке Python уже есть готовые встроенные инструменты — например, print или len, которые не нужно писать самим:
print(len("Python"))
Этот код выведет число 6 — столько символов в слове Python. Библиотеки языка вообще позволяют встраивать в свой код чужие готовые решения и не изобретать всё заново.
На курсе программирования для детей ученики Стартории пишут свою первую игру уже на третьем занятии. Функции появляются там не как теория, а как необходимость. При создании простого счётчика очков ребята выносят подсчёт в отдельную функцию.
Так не нужно повторять одну и ту же инструкцию для каждого уровня игры. Когда игра усложняется и уровней становится десять, а не два, такая функция экономит буквально часы работы над кодом.
Подробнее о том, как строится обучение языку с нуля, можно посмотреть на странице курса программирование на Python для начинающих.
Нет. Если функция должна что-то сделать — напечатать текст, изменить список — return можно не писать вовсе. Тогда функция просто выполняет инструкции без возврата значения наружу.
Нет, интерпретатор читает файл сверху вниз, и определение должно стоять раньше вызова. Это одна из первых ошибок, с которой сталкиваются новички, когда порядок строк перепутан.
Сколько угодно, включая ноль. Некоторые функции вообще не принимают данные на вход и просто выполняют одну и ту же инструкцию.
Тем, что её можно вызвать много раз из разных мест программы, не переписывая код заново. Это экономит время и снижает количество ошибок при изменении логики в будущем.
По сути да: функция — это оформленная особым образом инструкция, которую компьютер умеет выполнять по команде. Разница в том, что обычная строка кода выполняется один раз по порядку, а функцию можно вызывать сколько угодно раз.