Делаю (велосипедный) кеш вызовов функций (memoizing) в Python 3. Одна из подзадач - хешировать функции (имеется ввиду, код функций).
Надо хешировать обычные функции:
def f(a):
return a > 0
А также производные,
another_func = conjunction(f, g)
полученные с помощью
import functools
def conjunction(*funcs):
def conjunct(*args, **kwargs):
return functools.reduce(lambda total_result, next_function: total_result and next_function(*args, **kwargs), funcs, True)
return conjunct
Решил использовать
f.__code__.co_code
, но не учитываются вызываемые в функции функции. Также есть подозрение (не подтвержденное), что даже при неизменности функции, меняется
f.__code__.co_code
(возможно, при очистке внутреннего кеша Python).
Подскажите что-нибудь, пожалуйста? Может есть библиотека для этого (я не нашел)? Спасибо.