【发布时间】:2014-10-04 09:00:45
【问题描述】:
我不明白为什么只有在我第一次调用函数 multiply(x, y) 时才执行“cache = {}”行。之后,该行将被忽略。这使程序运行良好,但我不理解这种行为。
def memoize(func):
cache = {}
print("cache")
@functools.wraps(func)
def wrapper(*args):
if args in cache:
return cache[args]
result = func(*args)
cache[args] = result
return result
return wrapper
@memoize
def multiply(x, y):
return x * y
print(multiply(2, 3))
print(multiply(2, 3))
结果是:
cache
6
6
所以“cache = {}”和“print(“cache”)”这行只在第一次执行。 谢谢
【问题讨论】:
-
"第一次调用函数
multiply(x, y)时执行cache = {}行" 错误。该行是在您调用multiply之前执行之前。