Session State 影片
Session State 是官方少數做成專題短片的主題,值得單獨看完。看之前建議先讀本站 重新執行模型,才知道為什麼普通變數留不住。
Session State basics
頻道:Streamlit(官方)
這支影片在講什麼
官方工程師用具體畫面解釋:Widget 本身已經有狀態,但「跨 rerun 還要自己累加、或讓兩個輸入互相更新」時,就要用 st.session_state。
影片會示範這幾件事:
- 初始化:先檢查 key 在不在 Session State,再給預設值。漏掉這步,變數每次重跑都會被重設。
- Widget 的
key:輸入元件的值可以從st.session_state["該 key"]讀出來。 - Callback:
on_change(滑桿、數字輸入)與on_click(按鈕、表單送出)會在腳本從頭跑之前先執行。 - 雙向換算範例:並排「磅」與「公斤」兩個
st.number_input。改其中一個,callback 就把換算結果寫進另一個的 Session State,另一欄立刻更新。這是最能說明 callback 用途的例子。
看完接著做什麼
自己寫一個計數器,再寫一個兩個單位互相更新的輸入。若行為不對,九成是初始化寫錯或把值放在普通變數裡。文字版整理見 Session State。