Referenced Error

이찬·2023년 7월 18일
0

Python

목록 보기
17/17
post-thumbnail

파이썬의 전역변수와 지역변수를 다루며
"할당 전에 참조되는 로컬변수"라는 개념에 대해 알게 되었다.

    a = 10
    
    def prac():
 		print(a)
        
    print(a)
    prac()

변수 a가 prac함수 안에 존재하지 않으니
a를 전역네임스페이스에서 함수안으로 땡겨와 사용할 수 있게 한 것이다.

하지만 다음의 코드를 보자

a = 10
    
def prac2():
    a += 10
    print(a)
        
print(a)
prac2()

위의 코드는 local variable 'a' referenced before assignment 에러가난다

왜 "prac()에서는 a가 없을때 전역네임스페이스에서 잘 가져왔는데 prac2()에서는 가져오지 못하는걸까 ?"라고 생각했다.

이유는 앞서 말한 "할당 전에 참조되는 로컬변수"때문인데 prac2()안의 a+=10 부분에서 할당이 이루어진다.

하지만 이 때 파이썬은 a를 네임스페이스에서 가져오지 않고
새로운 지역변수의 선언이라 알아듣기에
먼저 참조가 되지않았다는 에러가 발생하는 것이다.

따라서 global선언 없이 함수 내에서 전역변수를 사용할 경우
print(a) , if a == 1: 과 같이 조회하는 기능만 가능하다.

a값을 변경하는 것과 같이 "할당"을 해주려면 global선언이 필수적이다.

a = 10
    
def prac2():
   global a
   a += 10
   print(a)
       
print(a)
prac2()
    
#출력1 : 10
#출력2 : 20     
profile
Kyunghee univ. IE 21

3개의 댓글

comment-user-thumbnail
2023년 7월 18일

정말 잘 읽었습니다, 고맙습니다!

답글 달기
comment-user-thumbnail
2023년 7월 18일

아주 유익한 내용이네요!

답글 달기
comment-user-thumbnail
2023년 7월 18일

좋은 글 잘 읽었습니다, 감사합니다.

답글 달기