2014-09-22 2 views
-2

그래서 나는 globals()와 함께 연주하고 시도 된이 :전역 변수 사전을 삭제하려면 어떻게해야합니까?

del globals() 

아웃 :

SyntaxError: can't delete function call 

어떻게 전역 변수의 사전을 삭제할 수 있습니까? 함수 호출을 통해서만 액세스 할 수 있으므로 삭제할 수 없습니까?

편집 : 나는 나쁜 생각이며 사용하지 않을 것임을 알고 있습니다. 나는 그것이 가능한지 알고 싶다. 그렇지 않다면 나는 왜 그런지 알고 싶다.

+2

당신은 파이썬에서 델의 잘못된 개념이 많이 있습니다. del은 객체가 아닌 참조를 삭제합니다. – simonzack

+1

왜 "전역 변수 사전"을 삭제 하시겠습니까? 성취한다는 것은 무엇을 의미합니까? – interjay

+0

@interjay : 지식, 그 외 아무 것도 : –

답변

1

globals()에 대한 참조를 삭제해도 dict이 제거되지 않습니다. 이와 같은 사전을 지울 수 있습니다.

globals().clear() 

하늘은 그 용도가 무엇인지 압니다.

는 여전히 전역없이 주위에 얻는 방법()

예를 들어

object = 0 .__class__.__mro__[1] 
+0

감사합니다! 마지막 줄에 대해 설명해 주시겠습니까? –

3

당신은 전역 범위를 삭제할 수는 없지만 당신 을 분명히 :하지만

x = 1 

globals().clear() 

x 
#>>> Traceback (most recent call last): 
#>>> File "", line 21, in <module> 
#>>> NameError: name 'x' is not defined 

한 경고 : 당신이하려는 어떤 잘못된 일이, 그리고 당신이 뭔가를해야 그밖에.

+0

+1 경고 –

관련 문제