Bu, özellikle Google App Engine Memcache API'sı ile ilgilidir, ancak diğer Memcache araçları için de geçerli olduğundan emin olabilirsiniz. eğer mümkünse bu yararlı olabilir böyle dict.get ('anahtar', 'defaultval')Memcache'de bir None değeri kaydetmek istersem ne olur?
olarak yöntem varsayılan bir değer belirlemenizi sağlar()
sözlük .get, Hiçbiri saklamak isteyebilirsiniz sözlükte bir değer olarak.
Ancak, memcache.get() bunu yapmanıza izin vermez. Şuna benzer yüzden benim @memoize dekoratör değiştirdik:
def memoize(keyformat, time=1000000):
"""Decorator to memoize functions using memcache."""
def decorator(fxn):
def wrapper(*args, **kwargs):
key = keyformat + str(args[1:]) + str(kwargs)
from google.appengine.api import memcache
data = memcache.get(key)
if Debug(): return fxn(*args, **kwargs)
if data:
if data is 'None': data = None
return data
data = fxn(*args, **kwargs)
if data is None: data = 'None'
memcache.set(key, data, time)
return data
return wrapper
return decorator
Şimdi ben ilk etapta Yok değerlerini saklamak edilmemelidir iyi bir argüman var eminim ama en bunu bir kenara koyalım şimdi. Bunu yapmak için daha iyi bir yol var mı?
Bence bu en iyi yaklaşım. Başka bir şey için karıştıramayacağınız bir sentinel değer verir. –
Yaptığım şey bu. Teşekkürler! – jamtoday