반응형

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 에러가 발생됩니다.

반응형
Posted by HLIFEINFO
,