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 영역에 있는 딕셔너리의 값들이 변경된 것을 볼 수 있습니다.
'컴퓨터 > 파이썬' 카테고리의 다른 글
[Python] 010. 클래스, 객체, 오브젝트, 인스턴스, 속성, 메서드 정의와 관계 & 사용 방법 (0) | 2023.07.30 |
---|---|
[Python] 009. 파이썬 모듈, 라이브러리, 패키지란 & 사용 방법 (0) | 2023.07.25 |
[Python] 007. 리스트 최대값 최소값 구하기 & 오름차순 내림차순 정렬 방법 (0) | 2022.06.29 |
[Python] 006. 리스트(list) 생성, 추가, 수정, 삭제, 병합하는 방법 (0) | 2022.06.18 |
[Python] 005. 타입변환(형변환) (0) | 2022.06.07 |
댓글