blob: 765b8a9382379f541f35941d4ceb7940f74ede0f [file] [log] [blame]
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# pylint: disable=C0301
# Based on/taken from
# http://code.activestate.com/recipes/578231-probably-the-fastest-memoization-decorator-in-the-/
# (with cosmetic changes).
# pylint: enable=C0301
def memoize(f):
"""Memoization decorator for a function taking a single argument."""
class Memoize(dict):
def __missing__(self, key):
rv = self[key] = f(key)
return rv
return Memoize().__getitem__