2021년 6월 17일 목요일

[파이썬] 변수 개체를 삭제하는 del 키워드

del 키워드를 이용해서 변수와 객체의 연결을 끊을 수 있습니다.

 

del 키워드는 다음과 같이 사용가능합니다.

 

del target_list

 

변수를 삭제하면 변수가 동일한 코드 블록의 전역문에서 발생하는지 여부에 따라 로컬 또는 전역에서 해당 변수의 바인딩이 제거됩니다. 변수가 삭제된후 참조를 하게 되면 NameError 에러가 발생합니다.

 

아래 코드를 참조하면 됩니다.

 

a = 10

 

print (a)

 

del a

 

print (a)

 

실행결과는 처음 print문에서는 변수 a의 값이 제대로 나오지만 두번째 print문에서는 에러가 발생됨을 알 수 있습니다.

 

10

Traceback (most recent call last):

  File "del_test1.py", line 7, in <module>

    print (a)

NameError: name 'a' is not defined

 

그런데 아래 코드와 같이 로컬에서 global로 선언한 변수를 삭제하면 어떻게 되는지를 보면

 

count = 10

 

def test (a):

    global count

 

    count = count + a

    print (count)

 

    del count

 

test (100)

 

print (count)

 

첫번째 print문에서는 이상없이 값을 출력되지만 역시 마찬가지로 NameError 에러가 발생됨을 볼 수 있습니다.

 

110

Traceback (most recent call last):

  File "del_test2.py", line 13, in <module>

    print (count)

NameError: name 'count' is not defined

 

마찬가지로 nonlocal로 선언된 변수를 삭제하면 바로 위의 함수에서 참조를 하면 NameError 에러가 발생됩니다.

 

댓글 없음:

댓글 쓰기