Назад к вопросам
JuniorТеорияЧасто
Что выведет программа?
def make_counter():
count = 0
def counter():
nonlocal count
count += 1
return count
return counter
c = make_counter()
print(c(), c(), make_counter()())1 2 1
- Ждать
3отmake_counter()(): каждый вызовmake_counterсоздаёт новую переменнуюcount, начиная с0, поэтому новый счётчик возвращает1. - Ждать, что
countобнуляется при каждом вызовеc():count = 0выполняется только вmake_counter, аnonlocalзаставляетcounterменять эту одну переменную.
- Что произойдёт, если убрать строку
nonlocal count? - Как сделать два счётчика, которые начинают с разных чисел?