Drkcore

12 01 2010 Python Tweet

pythonでクロージャ

昨日の続き

ウィキペディアによるとリストを参照すればいいらしいので。

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ルールってなんか分かりにくいな。単なる慣れなのか?

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021