python global 키워드 사용 질문합니다. global 선언하지 않았는데, 왜 함수 외부변수를 참조할 수 있는건지
조회수 833회
재귀함수 이용해 피보나치 수열 구현하는 걸 연습중인데
dic = {1: 1,
2: 1}
def pibo(n):
if n in dic:
return dic[n]
else:
out = pibo(n-1) + pibo(n-2)
dic[n] = out
return out
왜 여기서 global dic 을 하지 않아도 함수 내부에서 외부 변수를 참조할 수 있는지 궁금합니다.
1 답변
-
파이썬에서 함수 외부에서 선언되어 있는 변수를 글로벌 변수(전역 변수)라고 합니다. 글로벌 변수는 함수 외부 또는 내부에서 마음대로 접근할 수 있습니다.
질문 코드에서 dic이 pibo 함수 밖에서 선언되어 있기 때문에 글로벌 변수이고, 따라서 pibo 내에서 이 글로벌 변수 dic에 접근할 수 있습니다.
만약에 아래와 같이 pibo 안에 dic이 한번더 선언되어 있었다면 내부에서 선언된 것은 지역변수이고 그 아랫줄의 if n in dic의 dic은 그 지역 변수를 나타냅니다.
dic = {1: 1, 2: 1} def pibo(n): dic = {1: 0, 2: 1} if n in dic: return dic[n] else: out = pibo(n-1) + pibo(n-2) dic[n] = out return out
global 키워드는 아무대나 붙이는 것이 아니고 (1) 함수 내에서 전역 변수를 선언할 때 함수 내에서 붙이고, (2) 전역 변수의 내용을 함수 안에서 수정하고 싶을 때 함수 내에서 붙여서 사용하는 키워드입니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력