a = 2
b = 21
res = expensive_computation(a, b)
st.write("Result:", res)
res["output"] = "result was manually mutated"  # 👈 Mutated cached value
st.write("Mutated result:", res)
```
When you run this app for the first time, you should see three messages on the screen:
Cache miss (...)
Result: {output: 42}
Mutated result: {output: "result was manually mutated"}
No surprises here. But now notice what happens when you rerun you app (i.e. press R):
Result: {output: "result was manually mutated"}
Mutated result: {output: "result was manually mutated"}
Cached object mutated. (...)
So what's up?
What's going on here is that Streamlit caches the output res by reference. When you mutated res["output"] outside the cached function you ended up inadvertently modifying the cache. This means every subsequent call to expensive_computation(2, 21) will return the wrong value!
