Local Scope
my_score = 50
def inside_value_function():
my_score = 80
print(f"my score inside is {my_score}")
- 함수 내는 새로운 Name Space를 만들기에, 새로운 변수를 만들면 바깥 변수랑 다른 변수가 생성됨.
- 이 변수는 함수가 호출될 때 생성되고, 함수 실행이 끝나면 소멸됨.
Global Scope
my_score = 50
def inside_value_function():
global my_score
my_score = 80
print(f"my score inside is {my_score}")
- global 선언한 외부 변수 값을 바꿀 수 있음.
- global을 선언하면 함수 내의 global 변수는 바깥(global name space)의 global 변수에 접근(사용)함.
Enclosed/Enclosing Scope
def a():
x = 10 # global x
def b():
nonlocal x
x = 20 # local x
b()
print(x)
- nonlocal은 (Local을 제외한) 가장 가까이 있는 변수(Enclosing)를 사용하도록 함.
- 클로저(Closure) 구조에서 내부 함수(b)가 외부 함수(a)의 변수(x = 10)에 접근하고 값을 변경할 때 사용.
- nonlocal x 선언 안하면, local 변수 x(x=20)은 enclosing 변수 x(x=10) 에 영향을 주지 않고 소멸됨.
+ 추가 설명 1 : Name Space
- 개념 : 이름(변수명, 함수명 등)과 실제 객체(데이터)를 연결하는 맵핑(Mapping) 시스템
- 현재 스코프의 Name Space에서 시작하여 LEGB의 순서대로 탐색함.
- 함수를 만들면 함수 내 새로운 Name Space가 만들어진다.
- if 문, while 루프, for 루프 등의 제어문은 Name Space를 만들지 않는다.
+ 추가 설명 2: LEGB rule (python이 변수를 찾는 우선순위)
- L : local : 현재 작업 중인 함수 내부(가장 먼저 찾음)
- E : enclsing : 현재 함수를 둘러싸고 있는 다른 함수(클로저).
- G : global : 모듈 전체(파일)의 최상단 스코프.
- B : built-in : 파이썬이 기본적으로 제공하는 내장 함수나 상수의 스코프
+ 추가 설명 3: Global Constant
- print(globals()) : 현재 모듈(파일)의 전역 네임스페이스를 담고 있는 딕셔너리(dictionary)를 반환
- Global variable 사용 목적 : 반복하여 사용하는 Global Constant를 지정해 두고 불러와 사용
- 관례 : 모든 문자를 대문자로 작성하고, 단어 사이는 밑줄(_)로 구분함.
- 해당 변수의 값은 변경하지 말하야 할 상수임을 나타냄.
- 예: MAX_SIZE, PI_VALUE
-------------------------------------------------------------------------------
참고 : 실리콘밸리 엔지니어가 가르치는 파이썬 기초부터 고급까지 (inflearn, 미쿡엔지니어)
-------------------------------------------------------------------------------
'프로그래밍 > python' 카테고리의 다른 글
| [python] Class Construct(__init__) (0) | 2025.12.12 |
|---|---|
| [python] Pypi (pip install) (0) | 2025.12.12 |
| [python] Common Coding Mistakes (0) | 2025.12.09 |
| [python] Docstrings(String Literal) (0) | 2025.12.09 |
| [python] Assignment vs Shallow vs Deep Copy (0) | 2025.12.07 |