Что выведет код Middle Функции и области видимости обновлено
Лямбды с аргументом по умолчанию
Вопрос
Что выведет код? По строке на каждый print.
fs = []
for i in range(3):
fs.append(lambda x, i=i: x * i)
gs = [lambda x: x * i for i in range(3)]
print([f(10) for f in fs])
print([g(10) for g in gs])
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: [0, 10, 20], [20, 20, 20]. В fs значение i зафиксировано аргументом по умолчанию при создании каждой лямбды.
Что выведет
[0, 10, 20]
[20, 20, 20]
Разбор
В fs значение i зафиксировано аргументом по умолчанию при создании каждой лямбды. В gs все лямбды замыкают одну переменную comprehension, которая к вызову равна 2.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Значение по умолчанию копит данные
Следующий вопрос
Только позиционные и только именованные параметры
Термины по теме
Ещё по теме «Функции и области видимости»
- Что такое *args и **kwargs
- Перекрытие встроенных имён
- Как передаются аргументы в функцию Python
- Где хранятся переменные замыкания
- Вызов с *args и **kwargs: разбор сигнатуры
- Композиция функций
- Мемоизация через замыкание
- Повтор вызова с ограничением попыток