본문 바로가기
728x90

가변객체2

[PYTHON] Mutable vs Immutable : 메모리 레이아웃의 3가지 핵심 차이와 최적화 방법 파이썬을 다루는 개발자에게 Mutable(가변)과 Immutable(불변) 객체의 구분은 단순히 '값을 바꿀 수 있느냐'의 문제를 넘어섭니다. 이는 파이썬의 메모리 관리 시스템인 CPython이 객체를 어떻게 할당하고, 재사용하며, 가비지 컬렉션을 수행하는지에 대한 근본적인 아키텍처와 직결됩니다. 본 포스팅에서는 메모리 레이아웃의 구조적 차이점과 효율적인 코딩을 위한 4가지 실무 전략을 심도 있게 분석합니다.1. 객체의 정의와 ID의 본질파이썬의 모든 것은 객체입니다. 객체는 메모리에 생성될 때 고유한 id(메모리 주소)를 부여받습니다. 가변 객체는 생성 후 내부 상태를 변경해도 이 주소가 유지되지만, 불변 객체는 값이 바뀌는 순간 새로운 메모리 주소에 새로운 객체를 생성합니다. 이 메커니즘을 이해하는 .. 2026. 2. 27.
[PYTHON] 함수 기본 값(Default Parameter) 설정 시 치명적인 실수와 해결 방안 파이썬의 유연함 속에 숨겨진 '가변 객체(Mutable Objects)'의 비밀과 안전한 코드 설계 전략1. 서론: 왜 파이썬의 기본값은 때때로 예상과 다르게 동작하는가?파이썬을 사용하면서 함수를 정의할 때 인자에 기본값을 설정하는 기능은 매우 편리합니다. def func(a, b=10):와 같은 방식은 코드의 재사용성을 높이고 호출 시 번거로움을 줄여줍니다. 하지만 파이썬의 중급자로 넘어가는 과정에서 반드시 마주하게 되는 기이한 현상이 있습니다. 바로 "함수를 여러 번 호출했는데, 이전 호출의 결과가 다음 호출에 영향을 미치는 현상"입니다.이는 단순한 버그가 아니라 파이썬의 함수 정의 시점(Definition Time)과 객체 참조 방식 때문에 발생하는 고유한 특징입니다. 본 포스팅에서는 이 치명적인 .. 2026. 2. 13.
728x90