Определение и вызов функций, параметры и возвращаемые значения
Вы уже умеете писать программы, которые выполняют действия по порядку, а также использовать условия и циклы. Но что, если одну и ту же последовательность действий нужно повторить много раз в разных частях программы? Или если код становится слишком большим и сложным для чтения? Здесь на помощь приходят функции!
Что такое функция?
Функция в программировании — это блок кода с именем, который решает конкретную задачу. Представьте, что вы строите дом. Вместо того чтобы каждый раз заново придумывать, как класть кирпичи, вы создаёте «инструкцию по кладке кирпичей» (функцию). Затем, когда нужно положить кирпичи, вы просто «вызываете» эту инструкцию.
Функции — это мощный инструмент. Вот почему:
- Повторное использование кода (DRY - Don't Repeat Yourself): Написали один раз — используете многократно.
- Улучшение читаемости: Программа становится понятнее и структурированнее.
- Упрощение отладки: Легче найти и исправить ошибку в небольшом, изолированном блоке.
- Модульность: Большие задачи делятся на мелкие и управляемые части.
Как определить функцию в Python
В Python функции объявляют с помощью ключевого слова def. За ним идут имя функции, круглые скобки () и двоеточие :. Тело функции (инструкции) должно быть с отступом (обычно 4 пробела).
def greet():
"""Эта функция выводит приветствие."""
print("Привет, мир!")
# Это только определение. Функция пока ничего не делает.
Важно: Строка в тройных кавычках (
"""Docstring""") называется строкой документации (docstring). Она описывает, что делает функция, и очень полезна для понимания кода. Всегда добавляйте docstring к своим функциям — это хорошая практика!
Как вызвать функцию
Чтобы функция заработала, её нужно вызвать. Вызов функции происходит по её имени, за которым следуют круглые скобки:
def greet():
"""Эта функция выводит приветствие."""
print("Привет, мир!")
# Вызываем функцию
greet() # Выведет: Привет, мир!
Параметры и аргументы
Часто функциям нужна информация для работы. Эту информацию мы передаём через параметры (или аргументы). Параметры указываются в круглых скобках при определении функции.
def greet_person(name):
"""Эта функция приветствует человека по имени."""
print(f"Привет, {name}!")
# Вызываем функцию, передавая аргумент 'Алиса'
greet_person("Алиса") # Выведет: Привет, Алиса!
# Вызываем функцию, передавая аргумент 'Боб'
greet_person("Боб") # Выведет: Привет, Боб!
Здесь name — это параметр функции greet_person. Когда мы вызываем greet_person("Алиса"), строка "Алиса" является аргументом, который присваивается параметру name внутри функции.
Функция может принимать несколько параметров:
def add_numbers(a, b):
"""Эта функция складывает два числа и выводит результат."""
result = a + b
print(f"Сумма: {result}")
add_numbers(5, 3) # Выведет: Сумма: 8
add_numbers(10, 20) # Выведет: Сумма: 30
Возвращаемые значения
Не всегда функция должна просто что-то выводить на экран. Часто нам нужно, чтобы функция вернула результат своей работы, чтобы мы могли использовать его дальше в программе. Для этого используйте ключевое слово return.
def multiply(x, y):
"""Эта функция умножает два числа и возвращает результат."""
product = x * y
return product
# Вызываем функцию и сохраняем возвращаемое значение в переменную
res = multiply(4, 5)
print(f"Произведение: {res}") # Выведет: Произведение: 20
# Можно использовать возвращаемое значение напрямую
print(f"Результат умножения 7 на 2: {multiply(7, 2)}") # Выведет: Результат умножения 7 на 2: 14
Когда Python встречает return внутри функции, он немедленно прекращает её выполнение и возвращает указанное значение. Если функция не имеет оператора return или имеет return без значения, она неявно возвращает специальное значение None.
def do_nothing():
pass # 'pass' - это заглушка, ничего не делает
result = do_nothing()
print(result) # Выведет: None
Практическое задание: Калькулятор площади 📐
Давайте закрепим знания, создав функции для расчёта площади разных геометрических фигур.
- Создайте функцию
calculate_rectangle_area(length, width), которая принимает длину и ширину прямоугольника и возвращает его площадь. - Создайте функцию
calculate_circle_area(radius), которая принимает радиус круга и возвращает его площадь. Используйтеmath.piдля числа Пи (не забудьтеimport mathв начале файла). - Создайте функцию
calculate_triangle_area(base, height), которая принимает основание и высоту треугольника и возвращает его площадь. - Вызовите каждую функцию с разными значениями и выведите результаты на экран.
import math
# 1. Функция для площади прямоугольника
def calculate_rectangle_area(length, width):
"""Рассчитывает площадь прямоугольника."""
# Ваш код здесь
pass # Замените эту строку на ваш код
# 2. Функция для площади круга
def calculate_circle_area(radius):
"""Рассчитывает площадь круга."""
# Ваш код здесь
pass # Замените эту строку на ваш код
# 3. Функция для площади треугольника
def calculate_triangle_area(base, height):
"""Рассчитывает площадь треугольника."""
# Ваш код здесь
pass # Замените эту строку на ваш код
# Вызовы функций и вывод результатов
# Пример:
# print(f"Площадь прямоугольника 5x10: {calculate_rectangle_area(5, 10)}")
Попробуйте решить это задание самостоятельно. Это поможет вам лучше понять, как работают функции.
Функции — это фундаментальный строительный блок в Python. Они позволяют писать чистый, модульный и переиспользуемый код. Но что происходит с переменными, которые мы объявляем внутри функций? Доступны ли они вне её? И как быть с функциями, которые не имеют имени, но очень удобны для коротких операций? Об этом мы поговорим в следующем разделе!