示例#1
0
    def __call__(self, *args, **kwargs):
        original_result = MemorizedFunc.__call__(self, *args, **kwargs)

        if self.func not in _FUNCTION_HASHES:
            # Also store in the in-memory store of function hashes
            if PY3_OR_LATER:
                is_named_callable = (hasattr(self.func, '__name__')
                                     and self.func.__name__ != '<lambda>')
            else:
                is_named_callable = (hasattr(self.func, 'func_name')
                                     and self.func.func_name != '<lambda>')
            if is_named_callable:
                # Don't do this for lambda functions or strange callable
                # objects, as it ends up being too fragile
                func_hash = self._hash_func()
                try:
                    _FUNCTION_HASHES[self.func] = func_hash
                except TypeError:
                    # Some callable are not hashable
                    pass

        return original_result