Справочник по Python · модуль 6 · функции и модули
Глава 6.2
Объявление и создание
функций: def
Функция собирает несколько действий под одним именем. Её можно вызвать столько раз, сколько требуется, и передавать ей разные данные.
- Категория
- Пользовательские функции
- Уровень
- Начальный
- Связанные темы
- Переменные, условия, print()
- Зачем это знать
- Не повторять код и делить программу на задачи
§1Что такое функция
Функция — именованный блок кода для одной понятной задачи. Вместо повторения нескольких строк мы один раз описываем действие, а затем обращаемся к нему по имени.
объявить функцию → дать блоку имя вызвать функцию → выполнить её блок
Функции помогают разделять программу на части, повторно использовать код и читать программу по названиям её действий.
§2Объявление через def
Ключевое слово def сообщает Python, что дальше начинается объявление функции.
def имя_функции(параметры):
блок_кода
defначинает объявление;- после него пишется имя функции;
- в круглых скобках указываются параметры;
- после скобок ставится двоеточие;
- тело функции записывается с отступом в четыре пробела.
§3Объявление и вызов
Объявление создаёт функцию, но не выполняет её тело. Для запуска нужно отдельно написать имя функции с круглыми скобками.
def hello(): print("Привет, мир!") hello()
Привет, мир!
hello — имя функции, а hello() — её вызов. Без вызова строки внутри тела не выполнятся.
§4Порядок выполнения
Python читает файл сверху вниз. К моменту вызова объявление функции уже должно быть выполнено, поэтому обычно сначала пишут функции, а ниже — код, который их вызывает.
def show_message(): print("Функция работает") print("До вызова") show_message() print("После вызова")
До вызова Функция работает После вызова
§5Параметр и аргумент
Параметр — имя внутри объявления функции. Аргумент — конкретное значение, которое передаётся при вызове.
def greet(name): print("Привет,", name) greet("Алексей") greet("Мария")
Привет, Алексей Привет, Мария
В объявлении name — параметр. При первом вызове аргументом служит строка "Алексей", при втором — "Мария".
§6Несколько параметров
Если функции нужно несколько входных значений, параметры перечисляются через запятую. При обычном вызове аргументы сопоставляются с ними слева направо.
def show_sum(a, b): print(a + b) show_sum(5, 3)
8
§7Возврат значения: return
return возвращает результат из функции в место вызова. Возвращённое значение можно сохранить, вывести или использовать в вычислении.
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 | передаёт значение из функции | когда результат нужен дальнейшему коду |
def square(number): return number * number area = square(6) print("Квадрат числа:", area)
Так функция отвечает за вычисление, а внешний код решает, как использовать результат.
§9Повторное использование
Одно объявление можно вызывать с разными аргументами. Исправление формулы внутри функции сразу действует для всех вызовов.
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() при параметре name | TypeError: не передан обязательный аргумент | 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 + bresult = add(2, 3)Итог главы
def объявляет функцию, а имя со скобками вызывает её. Параметры принимают переданные аргументы. print() показывает значение, а return возвращает его из функции для дальнейшей работы.