값을 기억하게 하기
9강에서 카운터가 계속 1에서 멈췄던 거 기억하냥? 재실행 때마다 count = 0
으로 초기화됐기 때문이었지. 오늘 드디어 그 문제를 해결한다냥! 값을
기억하는 특별한 상자, st.session_state 를 배워보자냥.
오늘의 학습 목표
st.session_state가 왜 필요한지 이해한다.- 값을 저장하고 꺼내 쓴다.
- 9강에서 못 만든 카운터를 완성한다.
streamlit1.40 이상파이썬 코드로 웹 화면 만들기
설치하기 — 터미널에 그대로 붙여넣기
pip install "streamlit>=1.40"설치 확인 — 버전 번호가 찍히면 성공
python -c "import streamlit; print(streamlit.__version__)"위 버전은 최소 기준이라, 더 높은 버전이 깔려 있으면 그대로 써도 된다냥. 버전이 안 찍히고 에러가 나면 설치가 안 된 거라 설치 명령을 다시 실행해보자냥.
1단계 · 재실행에도 살아남는 상자
일반 변수는 재실행 때마다 처음부터 다시 만들어진다냥. 그런데
st.session_state 는 재실행이 일어나도 그대로 남아 있는 특별한
창고다냥. 여기에 넣어둔 값은 안 사라진다냥!
책상 vs 서랍
- 일반 변수 = 책상 위. 재실행이라는 청소부가 올 때마다 싹 치운다냥.
session_state= 서랍 안. 청소부가 와도 서랍은 안 건드린다냥.
기억하고 싶은 값은 서랍(session_state)에 넣으면 된다냥!
2단계 · 저장하고 꺼내기
session_state 는 딕셔너리처럼 쓴다냥. 파이썬 탐험하기에서 배운
딕셔너리 기억나냥? 열쇠(key)로 값을 넣고 꺼내는 거 말이다냥.
import streamlit as st
# 저장하기 — 딕셔너리처럼 열쇠에 값을 넣는다냥
st.session_state["nickname"] = "코딩냥"
# 꺼내기
st.write(st.session_state["nickname"])없는 값을 꺼내면 에러가 난다냥
서랍에 아직 안 넣은 열쇠를 꺼내려 하면 에러가 난다냥. 그래서 보통 처음 한 번만 초기화하는 코드를 맨 위에 둔다냥.
if "count" not in st.session_state:
st.session_state["count"] = 0"이미 있으면 그대로 두고, 없을 때만 0으로 시작" 이라는 뜻이라냥.
3단계 · 드디어 카운터 완성
자, 9강의 원수를 갚을 시간이다냥! 이번엔 진짜로 숫자가 쌓이는 카운터를 만들어보자냥.
import streamlit as st
# 1) 처음 한 번만 0으로 초기화
if "count" not in st.session_state:
st.session_state["count"] = 0
# 2) 버튼을 누르면 서랍 속 값을 1 늘린다냥
if st.button("증가"):
st.session_state["count"] = st.session_state["count"] + 1
# 3) 서랍 속 값을 보여준다냥
st.write("횟수: " + str(st.session_state["count"]))9강과 무엇이 다르냥
달라진 건 딱 하나 — count 를 일반 변수 대신 session_state 에
넣은 거다냥. 이제 재실행이 일어나도 서랍 속 값은 안 사라지니까, 누를
때마다 1, 2, 3, ... 차곡차곡 쌓인다냥!
4단계 · 직접 해보기
미션 · 좋아요 버튼
- "좋아요" 버튼을 만들고
- 누를 때마다
session_state의 숫자를 1 늘리고 - "지금까지 좋아요 OO개" 를 보여주자냥.
카운터와 거의 같다냥. 초기화 → 버튼으로 증가 → 보여주기, 이 세 박자를 손에 익히는 게 목표라냥!
복습 퀴즈
값을 기억하게 만드는 법을 배웠다냥! 이건 정말 큰 무기다냥. 다음 시간엔 이 기술로 목록을 차곡차곡 쌓는 방명록을 만들어본다냥. 숫자 하나가 아니라 여러 개를 기억하게 하는 거라냥!
