Gernar
JavaScript: язык и типы

Что такое функция

Разбор вопроса «Что такое функция» для Frontend Developer: что проверяет интервьюер, ключевые тезисы, практические примеры и частые ошибки.

Вопрос

Что такое функция

Профессия

Frontend Developer

Что хочет услышать интервьюер

Интервьюер хочет убедиться, что кандидат понимает базовое определение функции, её назначение и синтаксис в Python. Также важно, чтобы кандидат мог привести пример использования функции.

Ключевые тезисы

  • Функция — это блок кода, который выполняет определенную задачу и может быть вызван из других частей программы.
  • Функции помогают избежать дублирования кода, улучшают читаемость и упрощают поддержку программы.
  • Функции могут принимать аргументы (входные данные) и возвращать результат (выходные данные).
  • В Python функции объявляются с использованием ключевого слова def, за которым следует имя функции и параметры в скобках.
  • Пример: def add(a, b): return a + b

Подробный ответ

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

Функции в Python объявляются с помощью ключевого слова def, за которым следует имя функции и параметры в круглых скобках. Тело функции пишется с отступом и может содержать любые допустимые операторы Python. Функция может возвращать результат с помощью оператора return. Если return отсутствует, функция возвращает None.

Функции могут принимать аргументы, которые могут быть обязательными (позиционными), именованными (keyword), или иметь значения по умолчанию. Также в Python поддерживаются функции с переменным числом аргументов (*args и **kwargs). Это делает функции гибкими и адаптируемыми под разные сценарии использования.

Пример простой функции:

def greet(name):
    return f'Привет, {name}!'

print(greet('Анна'))  # Вывод: Привет, Анна!

Функции могут возвращать несколько значений, упакованных в кортеж. Например:

def get_user():
    return 'Анна', 25, 'anna@example.com'

name, age, email = get_user()

Практические примеры

Пример 1

Пример функции с аргументами по умолчанию:

def power(base, exponent=2):
    return base ** exponent

print(power(3))      # 9
print(power(3, 3))   # 27

Пример 2

Пример lambda-функции (анонимной функции):

square = lambda x: x * x
print(square(5))  # 25

Пример 3

Пример функции с переменным числом аргументов:

def sum_all(*numbers):
    return sum(numbers)

print(sum_all(1, 2, 3))  # 6

Частые ошибки

  • Забывают оператор return, в результате функция возвращает None.
  • Путают порядок аргументов при вызове функции, особенно когда смешивают позиционные и именованные аргументы.
  • Используют изменяемые объекты (например, списки) как значения по умолчанию для аргументов, что может привести к неожиданному поведению.

Связанные темы

  • Рекурсия — когда функция вызывает саму себя.
  • Замыкания (closures) — функции, которые запоминают значения из охватывающей области видимости.
  • Декораторы — функции, которые изменяют поведение других функций.
  • Генераторы — функции, которые возвращают итератор с помощью yield.

Follow-up вопросы

Какие бывают типы аргументов функции в Python?

Уровень: intermediate

В Python аргументы функций могут быть позиционными (передаются по порядку), именованными (передаются по имени параметра), а также иметь значения по умолчанию. Также можно использовать *args для переменного числа позиционных аргументов и **kwargs для переменного числа именованных аргументов.

Может ли функция возвращать несколько значений? Как это реализовать?

Уровень: basic

Да, функция может возвращать несколько значений. В Python это делается путем возврата кортежа, который затем можно распаковать в отдельные переменные. Например: def get_values(): return 1, 2, 3. При вызове: a, b, c = get_values().

Что такое lambda-функции и чем они отличаются от обычных?

Уровень: intermediate

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

Как работают замыкания (closures) в Python?

Уровень: advanced

Замыкание — это функция, которая запоминает значения из охватывающей области видимости, даже если эти значения больше не существуют в памяти. Это достигается за счет хранения ссылок на внешние переменные. Например: def outer(x): def inner(y): return x + y; return inner.

Что такое рекурсия и каковы ее ограничения в Python?

Уровень: intermediate

Рекурсия — это когда функция вызывает саму себя. В Python рекурсия ограничена максимальной глубиной стека вызовов (обычно около 1000). Для избежания переполнения стека важно предусмотреть базовый случай, который остановит рекурсию.

Содержание