728x90 클로저4 [PYTHON] nonlocal 키워드와 global 키워드의 3가지 스코프 제어 차이와 변수 오염 해결 방법 파이썬 프로그래밍을 진행하다 보면 함수 내부에서 외부 변수의 값을 수정해야 하는 상황을 마주하게 됩니다. 이때 초보 개발자들이 가장 흔히 저지르는 실수는 단순히 변수 이름을 호출하여 값을 할당하려 하는 것입니다. 하지만 파이썬의 LEGB(Local, Enclosing, Global, Built-in) 스코프 규칙에 따라, 명시적인 키워드 없이 외부 변수를 수정하는 것은 불가능합니다. 본 포스팅에서는 global과 nonlocal 키워드의 명확한 동작 원리를 분석하고, 중첩 함수 구조에서 발생하는 데이터 무결성 문제를 해결하는 전문가급 가이드를 제공합니다.1. Global 키워드: 모듈 레벨의 전역 변수 제어global 키워드는 현재 함수 스코프 내에서 특정 변수가 모듈 전체의 전역 범위(Global Sc.. 2026. 3. 2. [PYTHON] 익명 lambda 함수가 일반 함수 객체로 처리되는 3가지 내부 메커니즘과 차이점 해결 방법 1. 파이썬 Lambda의 본질: 이름 없는 함수 객체파이썬을 다루다 보면 한 줄짜리 짧은 로직을 위해 def 키워드로 정식 함수를 선언하는 것이 번거로울 때가 있습니다. 이때 사용하는 lambda(람다)는 흔히 '익명 함수'라고 불립니다. 하지만 "이름이 없다"는 것이 "기능이 부족하다"거나 "동작 방식이 다르다"는 것을 의미하지는 않습니다. 파이썬 인터프리터 수준에서 람다는 function 클래스의 인스턴스로 생성됩니다. 즉, 메모리 상에서는 일반 함수와 동일한 일급 객체(First-class Object)로 대우받으며, 단지 심볼 테이블에 할당된 '고유 이름'이 로 통일되어 있을 뿐입니다.2. Lambda vs Def: 런타임 처리 방식의 결정적 차이 3가지람다 함수와 일반 정의 함수(def)가 내.. 2026. 3. 2. [PYTHON] 중첩 함수의 마법, nonlocal 키워드 완벽 가이드 : Closure와 상태 유지의 핵심 파이썬 프로그래밍을 하다 보면 함수 내부에 또 다른 함수를 정의하는 중첩 함수(Nested Function) 구조를 자주 접하게 됩니다. 이때 초보 개발자부터 숙련된 개발자까지 한 번쯤 당혹감을 느끼는 지점이 바로 '바깥쪽 함수의 변수를 안쪽 함수에서 수정하고 싶을 때'입니다. 단순히 값을 읽어오는 것은 문제가 없지만, 값을 변경하려고 하면 UnboundLocalError가 발생하거나 의도치 않게 지역 변수가 새로 생성되어 버리곤 합니다. 이러한 스코프(Scope)의 한계를 극복하고 데이터의 캡슐화와 상태 유지를 가능하게 만드는 열쇠가 바로 nonlocal 키워드입니다. 본 가이드에서는 nonlocal의 정의부터 실전 활용 사례, 그리고 global과의 결정적 차이점까지 심도 있게 다룹니다.1. nonl.. 2026. 2. 17. [PYTHON] 내부 함수(Nested Function)의 이해와 활용 : 캡슐화와 클로저의 시작 함수 안의 함수, 단순한 중첩을 넘어 데이터 은닉과 고급 프로그래밍 기법으로 가는 관문1. 개요: 함수 안에 또 다른 세계를 만들다파이썬은 '일급 객체(First-class Object)'라는 철학을 바탕으로 함수를 매우 유연하게 다룹니다. 그 정점 중 하나가 바로 내부 함수(Nested Function)입니다. 내부 함수란 말 그대로 정의된 함수(Outer function)의 본문 내부에 위치한 또 다른 함수(Inner function)를 의미합니다. 단순히 코드를 겹쳐 쓰는 것이 아니라, 외부에서는 접근할 수 없는 '나만의 작은 도구'를 만들거나, 상태를 유지하는 '클로저(Closure)'를 생성하는 등 파이썬스러운(Pythonic) 코드를 작성하기 위한 필수적인 개념입니다.2. 왜 내부 함수를 사용.. 2026. 2. 14. 이전 1 다음 728x90