본문 바로가기
Python

[Python] [Streamlit 사용법] 4. session_state

by bryan.oh 2022. 2. 22.
반응형

Streamlit
session_state

 

session 과 같은 개념입니다.

 

기본 사용법 / 초기화

import streamlit as st

st.session_state['user_name']   # 오류!!

해당 key 가 존재하지 않은데 사용할 경우, 이와같이 오류가 발생합니다.

초기화 방법

if 'user_name' not in st.session_state:
    st.session_state['user_name'] = ''

key 체크를 먼저 해주고 기본값을 입력하면 됩니다.

아래와 같이, dictionary 방법과 attribute 방법 모두 사용할 수 있습니다.

import streamlit as st

if 'user_name' not in st.session_state:
    st.session_state['user_name'] = 'hello~ bryan'

st.write(st.session_state['user_name'])	# hello~ bryan
st.write(st.session_state.user_name)	# hello~ bryan

 

삭제

더 이상 사용하지 않을 거라면 아래와 같이 del 로 삭제할 수 있습니다.

if 'user_name' not in st.session_state:
    del st.session_state['user_name']

 

유용한 사용

input 이나 checkbox, radio 등등 key 속성이 있는 것이라면 아래와 같이 사용할 수 있습니다.

import streamlit as st

st.text_input('input name : ', key='user_name')

st.write(st.session_state.user_name)

 

주의 해야할 점

import streamlit as st

st.text_input('input name : ', key='user_name')
st.session_state.user_name = 'Hello~ Bryan'

이렇게 하면 오류가 발생합니다.

st.text_input('', key='something') 으로 사용하면 해당 위젯이 인스턴스가 됩니다. 그래서 그 이후로 값 변경을 할 수 없습니다.

import streamlit as st

st.session_state.user_name = 'Hello~ '# 가능
st.session_state.user_name = 'Bryan'  # 가능

st.text_input('input name : ', key='user_name')  # 가능

st.session_state.user_name = 'Hello~ Bryan'  # 오류!!

 

728x90
반응형

댓글