Python ленивый оценщик

Есть ли Pythonic способ инкапсулировать ленивый вызов функции, посредством чего при первом использовании функцииf(), он вызывает ранее связанную функциюg(Z) и на последующих звонкахf() возвращает кэшированное значение?

Обратите внимание, что запоминание может быть не совсем подходящим.

Я имею

f = g(Z)
if x:
     return 5
elif y:
     return f
elif z:
     return h(f)

Код работает, но я хочу реструктурировать его так, чтобыg(Z) вызывается только если используется значение. Я не хочу менять определениеg(...), а такжеZ немного большой для кеширования.

EDIT: я предположил, чтоf должно быть функцией, но это может быть не так.

Ответы на вопрос(7)

Ваш ответ на вопрос