……メモ化使え、以上(ってコメントでも突っ込まれてるか)。ま、とりあえずシンプルな実装例でも出しておくか。
class memoize(object):
def __init__(self, f):
self.__function = f
self.__cache = {}
def __call__(self, *args):
if args in self.__cache:
return self.__cache[args]
else:
self.__cache[args] = self.__function(*args)
return self.__cache[args]
def clear(self):
self.__cache.clear()
@memoize
def get():
data = open('config.yaml').read().decode('utf8')
config = yaml.load(data)
return config
俺がこちらの方が望ましい理由と考える理由を以下に述べる。
しかしクロージャの使用の有無に関わらず global が出てくる時点で何か変とは思わんかったのか。
この怪文書はクリエイティブ・コモンズ・ライセンスの元でライセンスされています。引用した文章など Kuwata Chikara に著作権のないものについては、それらの著作権保持者に帰属します。