inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

우리를 위한 프로그래밍 : 파이썬 중급 (Inflearn Original)

UnboundLocal Error: local variable referenced before assignmnet

해결된 질문

801

김제하

작성한 질문수 32

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
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 을 작성하면 되지만, 이는 나중에 디버깅을 힘들게 만들기 때문에 추천하지 않는다는 내용만 확인했습니다. 이에 대해 알려주시면 감사하겠습니다.

python django

답변 1

0

좋은사람

안녕하세요. 우선

변수 스코프에 대해 잘 정리된 사이트 소개해 드리니 꼼꼼하게 읽어보세요.

https://foramonth.tistory.com/39?category=901675

 

global 은 자주 사용되지는 않습니다. 언급하신 바와 같이 단일 페이지에서

코드의 양이 많을 경우 디버깅외 코드 이해가 다소 어렵기 때문이예요.

감사합니다.

진도미확인 (진도가 안 넘어감)

0

41

1

RuntimeError: There is no current event loop in thread 'MainThread'

0

84

1

chapter 07-01 실행 오류

0

67

1

Chapter05-04 : sum_func의 합이 이중 출력됩니다.

0

78

2

45. 병렬성 2 - Futures(5-1) wait가 의도된 대로 동작하지 않습니다.

0

93

2

멀티스레딩 - 44. 병렬성 1 - Futures(4-2)

0

71

2

chapter05_02 클로저 질문사항 !

0

53

1

LV1 설정

0

88

2

매직 메소드의 호출 방법 차이 문의

0

133

2

왜 numbers리스트를 만들때 str으로 숫자를 감싸나요?

0

96

2

스크랩핑 실습 중 Mac OS 인증서 문제

0

129

1

AsyncIO 멀티 스크랩핑 실습 예제 관련 질문

0

168

1

강의자료가 영상과 다릅니다

0

256

2

closure.cell_contents 초기화 하기 문의

0

131

2

map함수 사용 시, list변환 방법 문의

0

336

2

__mul__ 백터 * 숫지, 백터 * 백터 처리

0

144

1

del처리후 질문입니다.

0

154

1

car_list(car1,car2,car3) 인스턴스 tuple 타입 문의

0

224

1

coroutine에 대한 질문

0

243

1

제너레이터 이터레이터 질문이 있습니다.

0

250

1

atom install package search not working

0

277

1

Magic Method - Not Implemented

0

399

1

가상환경 질문!

0

404

1

병렬처리 추가 질문이 있습니다.

0

246

1