본문 바로가기
컴퓨터/파이썬

[Python] 008. LEGB 규칙과 실행순서

by Tommy0927 2023. 7. 24.
반응형


1. LEGB 규칙이란


파이썬에서 변수에 값을 바인딩 하거나 변수의 값을 참조할때 따르는 규칙을 말합니다.

 

Local : 함수 안을 의미합니다.

 

Enclosing : 함수 안에 함수가 있는 경우에 내부 함수에서 봤을때 바깥에 있는 함수의 공간을 의미합니다.

 

Global : 함수 바깥쪽에 있는 변수를 의미합니다.

 

Built-in : 이미 모듈 내에 내장되어 있는 파이썬 내장 함수를 의미합니다.

 

 

 


2. 실행 순서


실행 순서는 L -> E -> G -> B 순으로 인터프리터가 순서대로 확인을 하여 변수의 값을 참조합니다.

 

 

변수 예시)

 

1. a라는 변수 값 "100"을 메모리에 입력합니다.

2. count라는 함수를 메모리에 할당하고,

3. count 함수를 호출합니다.

4. Local 영역에 있는 변수 a에 변화된 값이 없기에 L은 탈락, 함수 안에 함수가 없기에 B는 자동으로 탈락, 함수를 종료한 후에 G 영역에 변수 a가 있기에 Global 영역에 있는 변수값 "100"을 출력합니다.

 

 

 

리스트 예시)

인터프리터가 위에서 아래로 처리하면서 본다면,

 

1. 처음 데이터 리스트는 Global 영역의 1, 2, 3 이였으나,

2. mul100함수를 메모리에 할당하고 mul100이라는 변수를 만나서 함수에 data 값을 넣으면

3. 그 때 데이터는 Local 영역에 들어갑니다. 들어가서 함수안에서 리스트의 0번째에 100을 곱하는 변수를 할당해주고 이 것을 리턴해줍니다.

4. 그리고나서 print를 하면, data의 변수는 L영역에서 0번째가 변경되었기에 data 리스트는 [100, 2, 3]이 됩니다.

 

 

딕셔너리 예시)

 

인터프리터가 위에서 나래로 처리하면서 본다면,

 

1.처음 cur_age에 "key"와 "value"를 메모리에 할당을 하고,

2.함수를 메모리에 할당한 후에

3.nextyear함수에 "cur_age"변수를 넣어주면, 함수로 되돌아가서 cur_age 변수의 값을 각각 1씩 더해주고

리턴을 해줍니다.

4.그리고 print를 하면 기존에 Global 영역에 있는 딕셔너리의 값들이 변경된 것을 볼 수 있습니다.

 

반응형

댓글