해결된 질문
작성
·
717
0
c = 30 # global variable(전역 변수)
def func_v3(a):
print(a)
print(c)
c = 40 # local variable(지역 변수)
# 위 코드를 실행했을 때, UnboundLocal Error가 발생하지만,
c = 30
def func_v3(a):
c = 40 # local variable(지역 변수)
print(a)
print(c)
func_v3(10)
10
40
# 말씀하신 대로 이렇게 작성하면 Error가 발생하지 않고, 10과 40으로 출력된다는 건 이해했습니다.
# 전역 변수보다 지역 변수를 우선시한다는 것
그런데 c = 40 을 print(c) 아래에 두었을 때와 위에 두었을 때, 이 위치가 파이썬 인터프리터가 바라보는 인식의 차이를 모르겠습니다. 이 내용을 구글링도 하고, [stackoverflow](https://stackoverflow.com/questions/10851906/python-3-unboundlocalerror-local-variable-referenced-before-assignment) 에도 들어가서 확인했지만, 이에 대한 확실한 설명은 없었습니다. 다들 이 문제에 대한 해결책으로 global 을 작성하면 되지만, 이는 나중에 디버깅을 힘들게 만들기 때문에 추천하지 않는다는 내용만 확인했습니다. 이에 대해 알려주시면 감사하겠습니다.
답변 1
0
안녕하세요. 우선
변수 스코프에 대해 잘 정리된 사이트 소개해 드리니 꼼꼼하게 읽어보세요.
https://foramonth.tistory.com/39?category=901675
global 은 자주 사용되지는 않습니다. 언급하신 바와 같이 단일 페이지에서
코드의 양이 많을 경우 디버깅외 코드 이해가 다소 어렵기 때문이예요.
감사합니다.