Что выведет код Middle Функции и области видимости обновлено

Два счётчика на замыканиях

Вопрос

Что выведет код? По строке на каждый print.

def make():
    n = 0
    def inc(step=1):
        nonlocal n
        n += step
        return n
    return inc

a, b = make(), make()
a(); a(5)
print(a(), b())
print(a.__code__.co_freevars)

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: 7 1, ('n',). Каждый вызов make() создаёт свою переменную n, поэтому счётчики независимы. a получил 1, затем 6, затем 7; b впервые даёт 1. cofreevars перечисляет свободные переменные замыкания: кортеж ('n',).

Что выведет

7 1
('n',)

Разбор

Каждый вызов make() создаёт свою переменную n, поэтому счётчики независимы. a получил 1, затем 6, затем 7; b впервые даёт 1. co_freevars перечисляет свободные переменные замыкания: кортеж ('n',).

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.