Вопросы по теме «Функции и аргументы»

Позиционные и именованные аргументы, *args, **kwargs, значения по умолчанию, замыкания, lambda — всё это спрашивают на собеседованиях. Частая ловушка — мутабельный объект как значение по умолчанию. Умение декомпозировать код на функции и правильно работать с аргументами — признак зрелого разработчика.

Всего в этом разделе 20 вопросов. Каждый — с правильным ответом и кратким разбором теории. Разбито на 4 части по 5 вопросов.

Коллекции и структуры данныхГенераторы списков и встроенные функцииЦиклы и условияИсключения и отладкаРабота с файлами: JSON и CSVИтераторы и генераторыNumPy: основыPandas и DataFrameСинтаксис и типы данных

Вопросы 15 из 20

1Есть функция `def power(x, exp=2): return x ** exp`. Что вернет вызов `power(3)`?
A6
B8
C9
D`TypeError`
Ответ: Если аргумент со значением по умолчанию не передан, используется дефолт.

Параметр `exp=2` означает, что если `exp` не указан при вызове, он равен 2. Поэтому `power(3)` вычисляет `3 ** 2` и возвращает 9. Значения по умолчанию помогают делать API функции удобнее: чаще всего используемый вариант вызова получается короче.

2Есть функция `def f(x): print(x)`. Чему равна переменная `res` после кода `res = f(3)`?
A`None`
B3
C`'3'`
D`TypeError`
Ответ: Если в функции нет `return`, то результат вызова — `None` (даже если что-то печатается).

Функция `f` вызывает `print(x)`, поэтому на экран будет выведено число 3. Но возвращаемого значения нет, значит неявно возвращается `None`. Поэтому `res = f(3)` присваивает `res` значение `None`. В аналитическом коде это важно: функции, которые должны участвовать в вычислениях, должны возвращать данные через `return`, а не только печатать.

3Есть функция `def add(x, y): return x + y`. Что вернет вызов `add(2, 3)`?
A5
B23
C`None`
D`TypeError`
Ответ: `return` возвращает значение из функции; без `return` функция возвращает `None`.

Функция определена через `def`, а результат вычисления выражения после `return` становится значением вызова функции. В примере `add(2, 3)` вернет 5, потому что складываются два числа. Это базовый паттерн: вычислять результат и явно возвращать его через `return`, чтобы дальше использовать в коде.

4Дана функция `def discount(total): if total >= 100: return 10; return 0`. Что вернет вызов `discount(120)`?
A10
B0
C120
D`None`
Ответ: Первый сработавший `return` завершает выполнение функции.

В `discount(120)` условие `total >= 100` истинно, поэтому выполняется `return 10` и функция сразу завершается. Второй `return 0` уже не выполняется. Это типичный паттерн: быстро вернуть результат для частого/важного случая и выйти из функции.

5Есть функция `def f(a, b, c): return a + b + c`. Какой вызов не выполнится из-за позиции аргументов (позиционный после именованного)?
A`f(1, 2, 3)`
B`f(1, b=2, 3)`
C`f(a=1, b=2, c=3)`
D`f(1, 2, c=3)`
Ответ: После передачи именованного аргумента нельзя передавать позиционные аргументы.

В Python позиционные аргументы должны идти до именованных. Вызов `f(1, b=2, 3)` нарушает это правило: после `b=2` идет позиционный `3`. Такой код приводит к ошибке вида «positional argument follows keyword argument». Остальные варианты корректны, потому что либо все позиционные, либо все именованные, либо позиционные идут перед именованными.

1234

Хотите тренировать интерактивно?

В приложении — таймер, прогресс, стрики и 1700+ вопросов по всем темам.

Тренировать в Telegram

Другие темы: Python

Коллекции и структуры данныхГенераторы списков и встроенные функцииЦиклы и условияИсключения и отладкаРабота с файлами: JSON и CSVИтераторы и генераторыNumPy: основыPandas и DataFrameСинтаксис и типы данных