Streamlit中session_state初始化打印语句重复出现的原因咨询
Streamlit打印语句多次输出的原因
这是由Streamlit的核心运行机制导致的:
- Streamlit在页面初始化和渲染过程中,会多次从头执行整个脚本:
- 第一次执行是「组件扫描阶段」:Streamlit会遍历脚本收集所有UI组件(比如标题、按钮)的信息,用来构建页面的初始结构;
- 第二次执行是「渲染阶段」:完成页面的最终渲染,确保所有状态和组件正确加载显示。
- 当
count还未被添加到st.session_state时,这两次脚本执行都会触发if 'count' not in st.session_state的判断,因此print(f'initializing count!')会被执行多次。
需要注意的是,Streamlit会自动处理st.write这类组件的重复渲染,避免重复显示内容,但print是直接输出到控制台的原生Python语句,不受Streamlit的渲染逻辑管控,所以会如实反映脚本的实际执行次数。
你可以通过以下代码验证这个机制:
import streamlit as st print("脚本正在执行") # 控制台会多次输出这句话 st.title('Counter Example') if 'count' not in st.session_state: print(f'initializing count!') st.session_state.count = 0 increment = st.button('Increment') if increment: st.session_state.count += 1 st.write('Count = ', st.session_state.count)
内容的提问来源于stack exchange,提问作者Amir Afghani
相关产品推荐
相关产品推荐

