웹 개발 입문
값을 기억하게 하기목록을 쌓기 · 방명록 만들기한 번에 제출하기위젯 콜백연습하기 Level 2
놀면 뭐 하니,
그냥 하는거야.

값을 기억하게 하기

코딩냥

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개" 를 보여주자냥.

카운터와 거의 같다냥. 초기화 → 버튼으로 증가 → 보여주기, 이 세 박자를 손에 익히는 게 목표라냥!

복습 퀴즈

Q1.재실행이 일어나도 사라지지 않고 값을 기억하는 것은?
Q2.session_state 는 무엇처럼 쓰냥?
Q3.카운터를 만들 때 맨 위에 두는 초기화 코드는 왜 필요하냥?
코딩냥

값을 기억하게 만드는 법을 배웠다냥! 이건 정말 큰 무기다냥. 다음 시간엔 이 기술로 목록을 차곡차곡 쌓는 방명록을 만들어본다냥. 숫자 하나가 아니라 여러 개를 기억하게 하는 거라냥!

13 / 33
이전2부 · 사용자에게 입력받기 · 미니 프로젝트 · BMI 계산기다음3부 · 기억하는 앱 · 목록을 쌓기 · 방명록 만들기