Common Lisp 有defvarwhich 创建一个全局变量,但只有在它是新的时才设置它:如果它已经存在,则不会重置。这在从长时间运行的交互式进程重新加载文件时很有用,因为它会保留数据。
我想在 Python 中也一样。我有foo.py包含这样的文件:
cache = {}
def expensive(x):
try:
return cache[x]
except KeyError:
# do a lot of work
cache[x] = res
return res
当我这样做时imp.reload(foo),cache我想避免的值丢失了。
我如何保持cache跨越reload?
附注。我想我可以遵循如何检查变量是否存在?:
if 'cache' not in globals():
cache = {}
但由于某种原因它看起来不像“Pythonic”......如果它是TRT,请告诉我!
PIPIONE
aluckdog
相关分类