Зачем нужны функции?
Представь, что тебе нужно три раза написать одно и то же приветствие. Без функции придётся копировать код. С функцией — написал один раз и вызываешь по имени.
print("Привет! Добро пожаловать.") print("Привет! Добро пожаловать.") print("Привет! Добро пожаловать.")
def greet(): print("Привет! Добро пожаловать.") greet() greet() greet()
Из чего состоит функция?
имя_функции — придумываешь сам, правила как у переменных
параметры — входные данные (можно без них)
: — обязательное двоеточие в конце заголовка
тело — код с отступом 4 пробела (или Tab)
def say_hello(): print("Привет!") print("Как дела?") # Вызов функции: say_hello()
Функция с параметрами
Параметры — это переменные, которые функция получает при вызове. Они делают функцию гибкой: одна и та же функция может работать с разными данными.
def greet(name): print(f"Привет, {name}!") greet("Миша") greet("Саша") greet("Коля")
def introduce(name, age): print(f"Меня зовут {name}, мне {age} лет.") introduce("Тима", 11) introduce("Лена", 13)
Функция с вычислениями
Внутри функции можно создавать переменные и выполнять любые вычисления:
def calc_area(width, height): area = width * height print(f"Площадь: {area} кв.м") calc_area(5, 3) calc_area(10, 4)
def show_info(name, score): doubled = score * 2 print(f"Игрок: {name}") print(f"Очки: {score}") print(f"Двойные очки: {doubled}") show_info("Макс", 150)
Функция, которая возвращает значение
До сих пор функции только выводили на экран. Но функция может вернуть результат — то есть передать его обратно туда, откуда была вызвана. Для этого используется ключевое слово return.
# print — просто показывает, не сохраняет def add_print(a, b): print(a + b) # return — возвращает результат, можно сохранить def add_return(a, b): return a + b add_print(3, 4) # выведет 7, но не сохранит result = add_return(3, 4) # сохранит 7 в переменную print(result)
return — отдаёт значение назад, его можно сохранить в переменную и использовать дальше.
def square(n): return n * n x = square(5) y = square(3) print(x) # 25 print(y) # 9 print(square(10)) # 100
Параметры со значением по умолчанию
Параметру можно задать значение по умолчанию. Тогда при вызове его можно не передавать — функция возьмёт дефолтное значение.
def greet(name, greeting="Привет"): print(f"{greeting}, {name}!") greet("Миша") # greeting = "Привет" по умолчанию greet("Саша", "Здравствуй") # переопределяем greeting
| Вызов | name | greeting | Вывод |
|---|---|---|---|
| greet("Миша") | Миша | Привет (дефолт) | Привет, Миша! |
| greet("Саша", "Хей") | Саша | Хей | Хей, Саша! |
Полный пример
Соберём всё в одном примере — функция с параметрами, вычислениями и return:
def bmi(name, weight, height): result = weight / (height * height) print(f"{name}: ИМТ = {result}") return result index1 = bmi("Коля", 45, 1.60) index2 = bmi("Лена", 52, 1.65) print(f"Разница ИМТ: {index2 - index1}")