Streamlit聊天应用会话变量不持久,单词计数无法累加问题排查
问题原因及解决方法
问题出在每次运行main()函数时都会强制重置会话变量。Streamlit的运行机制是:用户每一次交互(比如发送提问、触发页面刷新)都会重新执行整个脚本,包括main()函数内的所有代码。你在main()开头直接赋值st.session_state['words'] = 0,相当于每次交互都把计数归零,自然只能看到单次问答的单词数,无法累加总数。
解决步骤:
- 将会话变量的初始化改为仅在首次运行时执行,通过判断键是否存在来避免重复重置:
if 'words' not in st.session_state: st.session_state['words'] = 0 - 保留后续计算单次问答单词数
wd_cnt,并执行st.session_state.words += wd_cnt的逻辑,这样每次交互都会累加总数,不会被重置。
内容的提问来源于stack exchange,提问作者mrgou
相关产品推荐
相关产品推荐

