I would like to access a Python function's return value multiple times without repeating the computationally expensive parts.
Example:
def expensive_function():
    print('do expensive work')
    return 'output of expensive work'
def get_output_twice():
    output = expensive_function()  # This does the expensive work
    print(output)  # This does not do expensive work
    print(output)  # This does not do expensive work
def get_output_again():
    output = expensive_function()  # This does the expensive work again
    print(output)  # This does not do expensive work
get_output_twice()
print('\n')
get_output_again()
This produces:
do expensive work
output of expensive work
output of expensive work
do expensive work
output of expensive work
This example demonstrates:
- Assigning the return value to a variable allows that variable to be accessed multiple times without calling the function again, as demonstrated in get_output_twice().
- Assigning the return value to a variable in another function forces the expensive function to be called again.
Is it possible to access a function's return value via calls from multiple other functions without repeating expensive work and without the use of global?
 
    