1) 전역 변수(Global variable)란
Global scope, 즉 전역 범위에서 활동하는 변수. 함수를 포함하여 스크립트 전체에서 모든 요소에 해당 변수에 접근할 수 있는 변수이다.
2) 지역 변수(Local variable)란
Local scope, 즉 지역 범위에서만 영향을 주고 받을 수 있는 변수를 지칭한다. 예를 들어 함수 안에서 a = 1이라고 변수 선언을 하게 되면 이제 a는 해당 함수 안에서만 사용될 수 있다.(a는 함수 Fn안에서만 선언이 되었기 떄문에 Fn()안에서만 영향을 끼친다.)
3) global 키워드
함수 안에서 전역 변수의 값을 변경하려면 global 키워드를 사용해 선언을 해주면 된다.
주의점 🚨
반드시 " global a "와 같이 선언을 먼저 한 뒤에 변수의 값을 넣어줄 수 있다.
전역 변수가 없을 때 global 키워드를 사용한 경우
함수 안에 global + 변수 선언을 하면 해당 변수는 전역 변수가 된다.
4) nonlocal 키워드
전역 변수를 불러오는 키워드가 global 이었다면 지역 변수를 불러오기위해서는 nonlocal을 사용한다.
말그대로 해당 변수는 'local이 아니다'고 선언해주는 키워드다. 즉 상위 함수에 변수를 참조한다고 미리 선언한다는 것이다.
5) 'global' vs 'nonlocal'
global 변수 : 일반 함수 내에서 전역 변수를 사용할 때 사용
noncocal 변수 : 중첩 함수 내에서 상위 함수의 변수를 사용할 때 사용
c = 11
def test():
a = 3
b = 9
def sum():
nonlocal a
global b
a = 7 # nonlocal 변수는 상위 변수의 접근 O
b = 11 # global 변수는 중첩함수내에서 상위 함수의 변수는 접근 X
global c
c = 13 # global 변수는 함수 외부의 변수는 접근 가능
return True
sum()
return a, b, c
result = test()
print(result) # (7, 9 , 13) 출력
따라서 만약 함수내의 중첩함수에서 상위 함수의 변수를 global로 접근하려고 하면 의도대로 실행되지 않는다.(프로그래머스는 함수 리턴 식으로 코드가 제출되므로 조심할 것) ⭐️
'Programming 💻 > Python' 카테고리의 다른 글
[Python] Hash 자료형(사전 자료형) 정리 (0) | 2023.10.05 |
---|---|
[Python] deque의 정의, 함수, 활용 정리 (0) | 2023.10.05 |
[Python] is 와 == 연산자의 차이점 정리 (0) | 2023.09.06 |
[Python] 리스트 자료형 메소드 remove() / del / pop() 차이 (0) | 2023.08.23 |
[Python] replace() / strip(), lstrip(), rstrip() 함수 정리 (0) | 2023.07.22 |