Scope
변수 선언이 어디까지 valid한지를 결정하는 것이다. ⭐
📌 3가지 변수 타입이 존재한다.
- local variable : 해당 block안에서 정의된 변수
- nonlocal variable : 해당 block안에서 정의되지는 않았지만 visible한 변수
- global variable : 전역 변수
📌 2가지 스코프 규칙이 있다.
- Static or lexical scope
- Dynamic scope
Static or lexical scope
프로그램 코드에 기반한다.
📌 Search process는 local block 먼저 확인하고, 없다면 더 큰 블럭을 확인한다.
🎯 Python 예시

위의 예시
- a,b,c는 pc(x) 블럭안에 없기 때문에 더 큰 블럭으로 이동 ⇒ 부모 블럭에 존재함 = nonlocal
- x는 해당 블럭에서 선언했으므로 local
아래의 예시
- x, local은 nonlocal
- function = outside(5)를 실행하면 inside함수는 출력이 되지 않고 function 변수가 보유하기만 함
- function()를 inside함수를 보유한 상태로 실행해주면 inside함수 실행 !