본문 바로가기
👩🏻‍💻 개발 공부

[Flask 입문 3탄] 리스트, 딕셔너리, f-string, 따옴표까지 한 번에 이해하기!

by minheestory 2025. 4. 15.

 

지난 1탄과 2탄에서는 Flask 기본 구조와 HTML 태그에 대해 배워봤어요.
이번 글에서는 Flask 코드 안에 등장했던 파이썬 문법들 중
많은 분들이 헷갈려하는 부분들을 하나씩 자세히 정리해볼게요.

 

1. 리스트는 왜 쓰는 걸까?

예제 코드

topics = [
    {'id': 1, 'title':'html', 'body':'html is...'},
    {'id': 2, 'title':'css', 'body':'css is...'},
    {'id': 3, 'title':'javascript', 'body':'javascript is...'}
]
 

 

  • [ ]는 리스트(여러 개의 값을 모아두는 그릇)
  • { }는 딕셔너리(하나의 항목 안에서 정보를 구조적으로 저장)

여기서 topics는 글 목록 전체를 담고 있어요.
그 안에 있는 각 글은 id, title, body를 담은 딕셔너리 형식이죠.

 

왜 리스트 안에 딕셔너리를 쓰나요?

여러 개의 구조화된 데이터를 반복적으로 관리하기 위해서예요!

  • 리스트 : 여러 개의 글
  • 딕셔너리 : 글 하나의 정보 (id, title, body)

 

2. liTags = ''는 왜 빈 문자열로 시작할까?

 

liTags = ''
for topic in topics:
    liTags += f'<li><a href="/read/{topic["id"]}">{topic["title"]}</a></li>'
 

설명

  • liTags = ''  : HTML <li> 태그들을 하나씩 누적할 그릇을 먼저 빈 문자열로 초기화
  • +=: 하나씩 문자열을 덧붙임

결과 예시

 
<li><a href="/read/1">html</a></li>
<li><a href="/read/2">css</a></li>
<li><a href="/read/3">javascript</a></li>

이렇게 자동으로 만들어져요!


3. f-string은 왜 쓸까?

예제

 
f'<li><a href="/read/{topic["id"]}">{topic["title"]}</a></li>'

설명

  • 파이썬의 f"문자열 {변수}" 문법은 문자열 안에 변수를 간편하게 삽입하는 방법이에요.
  • 여기서는 topic["id"]와 topic["title"] 값을 HTML 문자열 안에 넣고 있어요.
name = "민희"
print(f"안녕하세요, {name}님!")  → 안녕하세요, 민희님!
 

 

f-string을 안 쓰면?

'<li><a href="/read/' + str(topic["id"]) + '">' + topic["title"] + '</a></li>'

 

너무 복잡하고, 보기 어려워요.
그래서 f-string이 훨씬 가독성도 좋고 오류도 줄어듭니다.

 

 4. f-string에서 왜 작은따옴표 ' '를 쓴 걸까?

예제

 
f'<li><a href="/read/{topic["id"]}">{topic["title"]}</a></li>'

핵심 포인트

  • HTML에서는 속성값에 보통 큰따옴표 " "를 사용해요.
<a href="/read/1">html</a>
  • 그래서 바깥쪽 문자열은 작은따옴표 ' '로 감싸면 안쪽에서 큰따옴표를 자유롭게 쓸 수 있어요!

 

바깥과 안쪽 따옴표가 겹치면?

f"<a href="/read/1">"  ❌ 오류 발생!
  • 이럴 때는: 바깥을 '로 하고 안을 "로 쓰거나, 반대로 바깥을 "로 하고 안을 '로 쓰면 OK!

 

마무리 요약


리스트 [] 여러 개의 항목을 순서대로 저장
딕셔너리 {} 하나의 항목에 구조화된 정보 저장
리스트 안에 딕셔너리 게시글 여러 개를 저장하는 데 유용
빈 문자열 '' 문자열 누적 시작점
f-string 변수와 문자열을 쉽게 합치는 방법
작은따옴표 ' ' 문자열 안에 " " 큰따옴표를 쓰기 위해 자주 사용

 

다음시간에도 Flask 공부 내용으로 돌아올게요!

감사합니다:)