Урок 3

Функции

Функция — это блок кода с именем. Написал один раз — используй сколько угодно. Разберём как создавать функции, передавать параметры и получать результат.

Основа

Зачем нужны функции?

Представь, что тебе нужно три раза написать одно и то же приветствие. Без функции придётся копировать код. С функцией — написал один раз и вызываешь по имени.

Без функции — плохо
print("Привет! Добро пожаловать.")
print("Привет! Добро пожаловать.")
print("Привет! Добро пожаловать.")
С функцией — хорошо
def greet():
    print("Привет! Добро пожаловать.")

greet()
greet()
greet()
▶ Вывод
Привет! Добро пожаловать. Привет! Добро пожаловать. Привет! Добро пожаловать.
Функция написана один раз, а вызвать её можно сколько угодно раз. Если нужно что-то изменить — меняешь только в одном месте.
Анатомия

Из чего состоит функция?

def имя_функции(параметр1, параметр2):заголовок тело функциитело (отступ 4 пробела!) print(...)
def — ключевое слово «определить функцию»
имя_функции — придумываешь сам, правила как у переменных
параметры — входные данные (можно без них)
: — обязательное двоеточие в конце заголовка
тело — код с отступом 4 пробела (или Tab)
⚠️ Отступ обязателен! Тело функции должно быть сдвинуто на 4 пробела. Без отступа Python выдаст ошибку.
Python — простая функция без параметров
def say_hello():
    print("Привет!")
    print("Как дела?")

# Вызов функции:
say_hello()
▶ Вывод
Привет! Как дела?
Сначала функцию нужно определить (написать def), а потом вызвать (написать её имя со скобками). Без скобок — ничего не произойдёт.
Параметры

Функция с параметрами

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

Python — один параметр
def greet(name):
    print(f"Привет, {name}!")

greet("Миша")
greet("Саша")
greet("Коля")
▶ Вывод
Привет, Миша! Привет, Саша! Привет, Коля!
Python — два параметра
def introduce(name, age):
    print(f"Меня зовут {name}, мне {age} лет.")

introduce("Тима", 11)
introduce("Лена", 13)
▶ Вывод
Меня зовут Тима, мне 11 лет. Меня зовут Лена, мне 13 лет.
При вызове функции значения передаются по порядку: первое значение идёт в первый параметр, второе — во второй. Нужно следить за порядком!
⚠️ Если функция принимает 2 параметра, при вызове нужно передать ровно 2 значения. Меньше или больше — ошибка.
Вычисления

Функция с вычислениями

Внутри функции можно создавать переменные и выполнять любые вычисления:

Python
def calc_area(width, height):
    area = width * height
    print(f"Площадь: {area} кв.м")

calc_area(5, 3)
calc_area(10, 4)
▶ Вывод
Площадь: 15 кв.м Площадь: 40 кв.м
Python — функция с несколькими действиями
def show_info(name, score):
    doubled = score * 2
    print(f"Игрок: {name}")
    print(f"Очки: {score}")
    print(f"Двойные очки: {doubled}")

show_info("Макс", 150)
▶ Вывод
Игрок: Макс Очки: 150 Двойные очки: 300
return

Функция, которая возвращает значение

До сих пор функции только выводили на экран. Но функция может вернуть результат — то есть передать его обратно туда, откуда была вызвана. Для этого используется ключевое слово return.

Python — print vs 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)
▶ Вывод
7 7
print — показывает значение на экране, но оно «теряется».
return — отдаёт значение назад, его можно сохранить в переменную и использовать дальше.
Python — return в действии
def square(n):
    return n * n

x = square(5)
y = square(3)
print(x)           # 25
print(y)           # 9
print(square(10))  # 100
▶ Вывод
25 9 100
💡 return сразу завершает функцию. Всё что написано после него — не выполняется.
Значения по умолчанию

Параметры со значением по умолчанию

Параметру можно задать значение по умолчанию. Тогда при вызове его можно не передавать — функция возьмёт дефолтное значение.

Python
def greet(name, greeting="Привет"):
    print(f"{greeting}, {name}!")

greet("Миша")               # greeting = "Привет" по умолчанию
greet("Саша", "Здравствуй") # переопределяем greeting
▶ Вывод
Привет, Миша! Здравствуй, Саша!
Параметры со значением по умолчанию пишутся после обязательных параметров. Если передать значение при вызове — оно заменит дефолтное.
ВызовnamegreetingВывод
greet("Миша")МишаПривет (дефолт)Привет, Миша!
greet("Саша", "Хей")СашаХейХей, Саша!
Всё вместе

Полный пример

Соберём всё в одном примере — функция с параметрами, вычислениями и return:

Python
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}")
▶ Вывод
Коля: ИМТ = 17.578125 Лена: ИМТ = 19.100... Разница ИМТ: 1.52...
💡 Хорошее правило: функция должна делать одно конкретное дело. Если функция и считает, и выводит, и сохраняет — лучше разбить её на несколько.

Готов проверить знания?

10 заданий на функции — выбор ответа и написание кода

К заданиям →