1
내가하려고하면 파이썬 2.7에서 일반 메모이 제이션 기능 (3.X에서 아무 문제)일관성 유형은
def init_memoize():
fns = dict()
def memoize(fn, *args):
if fn not in fns:
fns[fn] = dict()
print type(args) # prints "<type 'tuple'>"
print args in fns[fn] # throws the error
if args not in fns[fn]:
fns[fn][args] = fn(*args)
return fns[fn][args]
return memoize
memoize = init_memoize()
memoize(sorted, range(5))
memoize(sorted, range(10))
를 작성하고이 코드를 실행하기 위해 노력하고있어, 나는 오류 TypeError: unhashable type: 'list'
에서 얻을 주목할만한 줄,하지만 바로 전에, 나는 args의 타입이 해시 가능한 튜플인지를 검증한다.
args
의 유형이 변경되는 이유를 분명히 해줄 수 있습니까?
실제로 'memoize'를 호출하는 코드는 표시하지 않습니다. args로 당신은 무엇을 지나가고 있습니까? – BrenBarn