Модуль 6 · Функции и модули

Справочник по Python · модуль 6 · функции и модули

Глава 6.2

6.2

Объявление и создание
функций: def

Функция собирает несколько действий под одним именем. Её можно вызвать столько раз, сколько требуется, и передавать ей разные данные.

Категория
Пользовательские функции
Уровень
Начальный
Связанные темы
Переменные, условия, print()
Зачем это знать
Не повторять код и делить программу на задачи

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

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

Схемаодин блок — несколько вызовов
объявить функцию → дать блоку имя
вызвать функцию  → выполнить её блок

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

§2Объявление через def

Ключевое слово def сообщает Python, что дальше начинается объявление функции.

Pythonобщая форма
def имя_функции(параметры):
    блок_кода
  • def начинает объявление;
  • после него пишется имя функции;
  • в круглых скобках указываются параметры;
  • после скобок ставится двоеточие;
  • тело функции записывается с отступом в четыре пробела.

§3Объявление и вызов

Объявление создаёт функцию, но не выполняет её тело. Для запуска нужно отдельно написать имя функции с круглыми скобками.

main.pyпервая функция
def hello():
    print("Привет, мир!")


hello()
Выводпосле вызова hello()
Привет, мир!
Скобки запускают функцию

hello — имя функции, а hello() — её вызов. Без вызова строки внутри тела не выполнятся.

§4Порядок выполнения

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

main.pyсначала объявление, затем вызов
def show_message():
    print("Функция работает")


print("До вызова")
show_message()
print("После вызова")
Выводход программы
До вызова
Функция работает
После вызова

§5Параметр и аргумент

Параметр — имя внутри объявления функции. Аргумент — конкретное значение, которое передаётся при вызове.

main.pyодин параметр, два аргумента
def greet(name):
    print("Привет,", name)


greet("Алексей")
greet("Мария")
Выводдва вызова
Привет, Алексей
Привет, Мария

В объявлении name — параметр. При первом вызове аргументом служит строка "Алексей", при втором — "Мария".

§6Несколько параметров

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

main.pyдва параметра
def show_sum(a, b):
    print(a + b)


show_sum(5, 3)
Выводa = 5, b = 3
8

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

return возвращает результат из функции в место вызова. Возвращённое значение можно сохранить, вывести или использовать в вычислении.

main.pyфункция возвращает сумму
def add(a, b):
    return a + b


result = add(5, 3)
print(result)
print(add(10, 4) * 2)
Выводрезультат можно использовать
8
28

После выполнения return работа текущего вызова функции заканчивается. Строки ниже него в этом пути уже не выполняются.

§8return или print()

ДействиеЧто делаетКогда использовать
print(value)показывает значение на экранекогда результат нужно сообщить пользователю
return valueпередаёт значение из функциикогда результат нужен дальнейшему коду
main.pyвычисление отдельно от вывода
def square(number):
    return number * number


area = square(6)
print("Квадрат числа:", area)

Так функция отвечает за вычисление, а внешний код решает, как использовать результат.

§9Повторное использование

Одно объявление можно вызывать с разными аргументами. Исправление формулы внутри функции сразу действует для всех вызовов.

main.pyодна функция — три результата
def square(number):
    return number * number


print(square(3))
print(square(5))
print(square(10))
Выводтри вызова
9
25
100

§10Частые ошибки

Что написаноЧто произойдётКак правильно
def hello()SyntaxError: нет двоеточияdef hello():
тело функции без отступаIndentationErrorдобавить четыре пробела
функцию объявили, но не вызвалитело функции не выполнитсянаписать hello()
greet() при параметре nameTypeError: не передан обязательный аргументgreet("Анна")
result = print(a + b)на экране будет сумма, но в result попадёт Noneвернуть сумму через return a + b
вызов выше объявления функцииNameError: имя ещё не созданообъявить функцию до места первого вызова

§11Проверьте себя

Выполняется ли тело функции сразу после def?

Нет. def создаёт функцию. Её тело выполняется только после вызова со скобками.

Чем параметр отличается от аргумента?

Параметр — имя в объявлении функции, аргумент — конкретное значение при вызове.

Зачем нужен return?

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

§12Шпаргалка

Без параметровdef hello(): print("Привет")
Один параметрdef greet(name): print(name)
Вернуть результатdef add(a, b): return a + b
Вызватьresult = add(2, 3)

Итог главы

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

Глава 6.2 · Объявление функций: def · Справочник по Python Автор: Макаров Максим Николаевич