РАЗБИРАЕМ ПО ШАГАМ
От идеи к работающему коду
Функция даёт имя отдельному действию и позволяет вызывать его с разными данными. Главное — договориться о контракте: что приходит на вход и какое значение возвращается.
Сразу к запуску примера ↓
- 1Параметры на входе
- 2Вычисление внутри
- 3Возвращаемое значение
1. Определение и вызов
def начинает определение функции. После имени идут скобки с параметрами и двоеточие, а тело записывается с отступом. Определение само по себе не выполняет тело: нужен вызов.
Параметр — имя внутри функции, аргумент — конкретное переданное значение. В вызове greet("Анна") строка становится значением параметра name.
def greet(name): return f"Привет, {name}!"print(greet("Анна"))print(greet("Барсик"))2. return и print решают разные задачи
print показывает текст, return передаёт результат тому коду, который вызвал функцию. Возвращённое значение можно сохранить, сравнить или использовать в следующем вычислении.
return завершает выполнение функции. Если return с выражением нет, функция возвращает None. Поэтому вычислительные функции лучше не связывать с печатью и input.
def square(number): return number * numberresult = square(4)print(result + 1)3. Локальные переменные
Переменная, созданная внутри функции, обычно локальна: она относится к этому вызову. Внешний код получает доступ к результату через return, а не через попытку прочитать внутреннее имя.
Это помогает использовать короткие функции независимо. Передавай необходимые данные параметрами; так поведение не будет скрыто зависеть от случайной внешней переменной.
def circle_area(radius): pi = 3.141592653589793 area = pi * radius ** 2 return areaprint(round(circle_area(2), 2))4. Контракт и проверки
Контракт указывает допустимые входные данные и результат. Например, initials получает два непустых слова и возвращает строку инициалов. Если задача требует вернуть значение, один print не выполнит договорённость.
Несколько вызовов с известными результатами проверяют функцию без ручного ввода. На сайте тест может вызывать функцию сам: имя, параметры и return должны совпадать с условием.
def initials(first, last): return first[0].upper() + "." + last[0].upper() + "."print(initials("анна", "смирнова"))print(initials("иван", "петров"))Где легко ошибиться
- Напечатать ответ вместо return, когда тест ждёт значение.
- Перепутать порядок аргументов.
- Использовать локальное имя за пределами функции.
Проверь понимание: Чему равен result после result = print("Привет")?
None. print вывел сообщение, но не вернул напечатанную строку.
