def get(self, key, default=Empty, creator=Empty, expire=None):
        """
        :para default: if default is callable then invoke it, save it and return it
        """
        try:
            return self.storage.get(key)
        except __HOLE__ as e:
            if creator is not Empty:
                if callable(creator):
                    v = creator()
                else:
                    v = creator
                self.set(key, v, expire)
                return v
            else:
                if default is not Empty:
                    if callable(default):
                        v = default()
                        return v
                    return default
                else:
                    raise
dataset/ETHPy150Open limodou/uliweb/uliweb/lib/weto/cache.py/Cache.get