def make_counter(start=0): count = start def incr(): nonlocal count count += 1 return count return incr
>>> c = make_counter() >>> c() 1 >>> c() 2
>>> c.__closure__[0].cell_contents 2 >>> c.__closure__[0].cell_contents = -1 >>> c() 0