✅ Python의 Final 키워드 완벽 정리

2025. 5. 27. 13:29·기술블로그-Fastapi편
목차
  1. ✅ Python의 Final 키워드 완벽 정리
  2. 1. 🎯 Final이란?
  3. 2. 📌 기본 사용법
  4. 3. 🧪 mutable 객체와 Final
  5. 4. ⚠️ Final과 Immutable은 다르다!
  6. 5. 🧠 요약 정리
  7. 🔚 마무리 팁

✅ Python의 Final 키워드 완벽 정리

1. 🎯 Final이란?

  • Final은 **"재할당 불가"**를 의도적으로 표시하는 타입 힌트입니다.
  • from typing import Final을 통해 사용하며, **정적 분석 도구(mypy, pyright)**가 이를 체크합니다.
  • 런타임에는 영향을 주지 않습니다. (실행 시 에러는 없음)

✅ "이 변수는 더 이상 다른 값으로 바뀌지 않아야 해요"라는 개발자 의도 표시


2. 📌 기본 사용법

from typing import Final

PI: Final = 3.14
PI = 3.14159  # ❌ mypy에서 에러 발생 (재할당 금지)
  • Final로 지정된 변수는 재할당이 금지됩니다.
  • 단, mutable 객체의 경우 내부 값은 여전히 변경 가능!

3. 🧪 mutable 객체와 Final

from typing import Final

my_list: Final = [1, 2, 3]

my_list.append(4)     # ✅ 가능 (리스트 내용 변경)
my_list = [9, 8, 7]   # ❌ 불가능 (재할당 시 경고 발생)

🔍 Final은 변수 자체의 "참조 변경"을 막을 뿐, mutable 내부 내용은 막지 않습니다.


4. ⚠️ Final과 Immutable은 다르다!

구분 의미 예시 결과

Final 변수 재할당 금지 Final = [1, 2, 3] 내부 수정 가능 🔁
Immutable 내부 값 변경 불가 tuple, str, frozenset 완전 불변 🔒
my_str: Final = "hello"
my_str = "world"  # ❌ 불가능

my_tuple: Final = (1, 2, 3)
# 튜플 자체, 내부 값도 변경 불가

5. 🧠 요약 정리

항목 설명

목적 변수 재할당을 방지하려는 의도 표현
사용 위치 전역 상수, 설정 값 등 재할당되면 안 되는 곳
런타임 영향 ❌ 없음 (정적 분석 도구만 검사함)
내부 수정 ✅ 가능 (mutable 객체일 경우)
진짜 불변 필요 시 tuple, frozen dataclass, frozenset 등 사용

🔚 마무리 팁

  • Final은 협업 시 명확한 의사소통 도구로 유용합니다.
  • mypy, pyright 등과 함께 사용하면 정적 안전성 확보에 도움이 됩니다.
  • 특히 전역 상수, 설정 값, 고정된 환경 값 등에 자주 사용됩니다.

📌 진짜로 바뀌면 안 되는 "값 자체"가 있다면, immutable 자료형과 함께 사용하는 것이 베스트!

'기술블로그-Fastapi편' 카테고리의 다른 글

✅ Base62의 encode() 메서드 완전 정리  (0) 2025.05.27
✅ 클래스 변수 vs 인스턴스 변수 vs ClassVar 완벽 정리  (0) 2025.05.27
✅ Python / FastAPI Annotated + Field 문법 정리: 실행에 영향이 있을까?  (0) 2025.05.27
✅ FastAPI 접속 주소 정리: 0.0.0.0 vs 127.0.0.1  (0) 2025.05.27
✅ FastAPI 핵심 용어 정리: path operation function  (0) 2025.05.27
  1. ✅ Python의 Final 키워드 완벽 정리
  2. 1. 🎯 Final이란?
  3. 2. 📌 기본 사용법
  4. 3. 🧪 mutable 객체와 Final
  5. 4. ⚠️ Final과 Immutable은 다르다!
  6. 5. 🧠 요약 정리
  7. 🔚 마무리 팁
'기술블로그-Fastapi편' 카테고리의 다른 글
  • ✅ Base62의 encode() 메서드 완전 정리
  • ✅ 클래스 변수 vs 인스턴스 변수 vs ClassVar 완벽 정리
  • ✅ Python / FastAPI Annotated + Field 문법 정리: 실행에 영향이 있을까?
  • ✅ FastAPI 접속 주소 정리: 0.0.0.0 vs 127.0.0.1
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (777)
      • Python (32)
      • 프로젝트 (101)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (153)
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    btscomeback
    travel ban
    youngprofessionals
    뷔
    hotcoffeecase
    chatgpterror
    chinanightlife
    life reflection
    americanlaw
    RM
    basalcellcarcinoma
    btsreunion
    americaparty
    smartphonedurability
    gpterror
    homebartrend
    trumpmuskclash
    college reunions
    urbantrends
    livebroadcast
    classaction
    remittance
    bts
    newpoliticalparty
    btsjungkook
    btsdischarge
    self-growth
    global politics
    lawsuitculture
    titaniumcase
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
✅ Python의 Final 키워드 완벽 정리

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.