ウィキペディアによるとリストを参照すればいいらしいので。
def make_counter(n):
c = []
c.append(n)
def counter():
l = c.pop()
l += 1
c.append(l)
return l
return counter
ctr1 = make_counter(5)
ctr2 = make_counter(3)
print "ctr1: ", ctr1()
print "ctr1: ", ctr1()
print "ctr1: ", ctr1()
print "ctr2: ", ctr2()
print "ctr2: ", ctr2()
print "ctr1: ", ctr1()
さて実行
$ ./make_counter.py
ctr1: 6
ctr1: 7
ctr1: 8
ctr2: 4
ctr2: 5
ctr1: 9
おーできた。でもこれだったらクラスのほうが分かりやすいなぁ。
class Counter:
def __init__(self,num):
self.c = int(num)
def count(self):
self.c += 1
return self.c
LEGBルールってなんか分かりにくいな。単なる慣れなのか?