# nice and clean closure notation def get_counter_neat(): def f(): f.x += 1 return f.x f.x = 0 return f # traditional, not_so_neat closure notation def get_counter_traditional(): x = [0] def f(): x[0] += 1 return x[0] return f #### EXAMPLE ########################################################### cnt_a = get_counter_neat() cnt_b = get_counter_neat() print cnt_a() # >>> 1 print cnt_a() # >>> 2 print cnt_a() # >>> 3 print cnt_b() # >>> 1 print cnt_a() # >>> 4 print cnt_b() # >>> 2 print cnt_b() # >>> 3