如何将函数的输出累积到 streamlit 中的列表中,以便列表持续存在?

How do I accumulate the output of a function onto a list in streamlit so that the list persists?

Streamlit 每次 运行 时都会转储所有对象。甚至任何交互都会触发此转储。 Streamlit 允许函数缓存。我需要的只是函数缓存少一点。

我想做的是累积由用户交互触发的函数评估的点数:

points = []

setting = st.slider("set the value",value=5,min=1,max=10)
points.append([setting, func(setting)])

st.write(points)

理想情况下,我会随着用户的互动逐渐积累积分。这似乎应该是可能的。怎么做到的?

您可以使用 SessionState hack:

import SessionState
session_state = SessionState.get(points=[])


setting = st.slider("set the value", value=5, min_value=1, max_value=10)
session_state.points.append(setting)

st.write(session_state.points)

SessionState 的来源:https://gist.github.com/tvst/036da038ab3e999a64497f42de966a92

讨论:https://discuss.streamlit.io/t/preserving-state-across-sidebar-pages/107/15

关于多页面应用程序的更多近期工作 - https://discuss.streamlit.io/t/multi-page-app-with-session-state/3074