global & nonlocal
반응형
프로그래머스 문제를 풀다가 변수 scope관련 문제가 생겨서 정리하는 포스팅
프로그래머스는 나머지 알고리즘문제 풀이 사이트와 달리 아래와 같이 Solution함수를 제출하는 형식이다
흔히 아는 global키워드는 함수 내부에서 함수 외부에 있는 전역변수에 대한 수정을 할 때 선언한다
global을 선언하지 않고 함수 내부에서 n에 관한 업데이트를 하게된다면 바깥 scope의 n의 내용은 변경되지 않는다
## 예시
n = 1
def solution(num,target):
global n
n += 1
이번엔 아래와 같은 상황을 생각해보자, Solution 내부에 dfs() 라는 함수를 만들고 solution에 있는 n을 수정하고 싶을 때 위와 같이 global을 사용하게 되면 오류가 발생하게 된다, 전역변수가 아니기에 발생 ㅜㅜ
def solution(num, target):
n = 1
def dfs():
global n
n += 1
따라서 solution 내부에 있는 n을 변경하고 싶을 때는 nonlocal이라는 키워드를 사용해야한다
말 그대로 전역변수는 아니고 로컬 변수도 아닌 변수를 사용한다는 의미쯤으로 받아들이면 될 것 같다
def solution(num, target):
n = 1
def dfs():
nonlocal n
반응형
'⌨Programming > Python' 카테고리의 다른 글
세그멘테이션모델 인퍼런스결과를 원본과 합치기 (0) | 2023.05.09 |
---|---|
파이썬 환경변수 설정으로 보안관리하기 (0) | 2023.04.01 |
파이썬으로 S3 bucket의 다양한 정보를 가져와보자(오브젝트 url, 생성시간 etc...) (0) | 2022.06.19 |
[python, 파이썬] sum 함수를 이용한 차원축소 및 병합 (0) | 2022.05.29 |
파이썬 JSON파일 다루기(읽기, 쓰기, 수정) (0) | 2022.04.20 |