[python] 파이썬에서 변수 지우기

파이썬에서 변수의 값을 지우는 방법이 있습니까?

예를 들어 바이너리 트리를 구현 한 경우 :

Class Node:
    self.left = somenode1
    self.right = somenode2

트리에서 일부 노드를 제거 self.left하려면 비워 두어야합니다.



답변

무슨 일이야 self.left = None?


답변

del키워드는 할 것입니다.

>>> a=1
>>> a
1
>>> del a
>>> a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined

하지만이 경우에 투표 self.left = None


답변

var = None “값을 지우고”변수 값을 “없음”과 같이 “널”로 설정하지만 변수에 대한 포인터는 그대로 유지됩니다.

del var 변수에 대한 정의를 완전히 제거합니다.

나중에 변수를 사용하려면 새 값을 설정하십시오. 즉, 변수를 유지하는 None것이 좋습니다.


답변

실제로는 변수 / 속성을 삭제하지 않습니다. 값을로 설정 None하면 변수가 여전히 메모리의 공간을 차지합니다. 메모리에서 변수의 모든 존재를 완전히 지우려면 다음을 입력하십시오.

del self.left


답변

  • 희망이 할 경우 완전히 삭제는 사용 del:

    del your_variable

  • 또는 그렇지 않으면하는 값을 확인합니다None :

    your_variable = None

  • 그것이 만약 반복 가능한 (예 : 목록 또는 튜플 등)을, 당신은 같은 비울 수 있습니다 :

    your_variable.clear()

그런 다음 your_variable비어있을 것입니다


답변

변수를 삭제 하시겠습니까?

좋아, 나는 @bnul 답변에 가장 좋은 대안 아이디어가 있다고 생각한다.

다음을 사용하여 개별 이름을 삭제할 수 있습니다 del.

del x
또는 globals () 객체에서 제거 할 수 있습니다.

for name in dir():
if not name.startswith('_'):
del globals()[name]

이것은 예제 루프 일뿐입니다. 그것은 밑줄로 시작하지 않는 이름 만 방어 적으로 삭제하고, 당신이 인터프리터에서 시작할 때 밑줄없이 이름 만 사용했다고 가정합니다. 당신이 정말로 철저히 원한다면 하드 코딩 된 이름 목록을 사용하여 대신 (허용 목록) 유지할 수 있습니다. 통역사를 종료하고 다시 시작하는 것 외에는 사용자를 위해 정리를 수행하는 내장 기능이 없습니다.

가져온 모듈 (import os)은 sys.modules에서 참조하기 때문에 가져온 상태로 유지됩니다. 후속 가져 오기는 이미 가져온 모듈 객체를 재사용합니다. 현재 글로벌 네임 스페이스에 대한 참조가 없습니다.

이 답변을 재고하십시오!


답변

위에서 언급 한 몇 가지 옵션을 사용했습니다.

del self.left

또는 사용하여 값을 없음으로 설정

self.left = None

값을 없음으로 설정할 때 차이점을 알고 몇 가지 예외 처리기를 배치하는 것이 중요합니다. 템플릿을 사용하여 조건 문의 값을 인쇄하는 경우

print("The value of the variable is {}".format(self.left))

변수 인쇄 값 “변수 값이 없음”으로 표시 될 수 있습니다. 따라서 몇 가지 예외 처리기를 거기에 배치해야합니다.

if self.left:
    #Then only print stuff

위의 명령은 self.left가 아닌 경우에만 값을 인쇄합니다 None