Функции как значения (первого класса)
В Python функция — такое же значение, как число или строка: её можно положить в переменную и передать другой функции.
Функция без скобок — это значение
Имя функции без скобок — ссылка на саму функцию, а со скобками — её вызов. Ссылку можно сохранить в переменную и вызывать через неё.
def hello():
print('привет')
f = hello # без скобок — сохранили функцию
f() # вызвали через переменную -> привет
Передать функцию в функцию
Раз функция — значение, её можно передать как аргумент. Так работают, например, sorted(key=...) и map: вы передаёте им функцию, а они её применяют. Это гибко и экономит код.
Зачем это нужно
Функции-значения позволяют выбирать поведение на ходу: передать разное правило сортировки, разный обработчик. Новичку не обязательно писать так сразу, но понимать полезно — вы встретите это в реальном коде и документации.
Частые вопросы
В чём разница f и f()? f — сама функция (значение), f() — её вызов (результат).
Это сложно для новичка? Идея простая; на практике вы встретите её в sorted(key=...) и подобном.
Начать игру бесплатно