2010-12-04 6 views
1

"x"가 있으면 "x exists"를 인쇄하십시오.파이썬에서 변수가 있는지 어떻게 확인합니까?

UnboundLocalError at /settings/ 
local variable 'avatarlink' referenced before assignment 
+1

다시 말해서 : 일반적으로'locals()','globals()'를 사용하지 말고'UnboundLocalError'를 잡아 내지 말고 대신 코드를 수정하십시오. 파이썬에서 범위, 네임 스페이스, 네이밍 및 바인딩에 대한 링크는 http://stackoverflow.com/questions/575196/in-python-why-can-a-function-modify-some-arguments-as에서 제공되는 답변을 참조하십시오. -perceived-by-the-caller-b/575337 # 575337 – jfs

+2

-1 : 항상이 오류가 발생하면 ** 디자인 ** 문제가 발생합니다. 변수를 "테스트"할 필요가 없으며 디자인을 수정해야합니다. 왜 항상 "이 오류가 발생하고 있습니까? 어떤 디자인 실수를하고 있습니까? –

+0

[변수가 파이썬에 존재하는지 어떻게 확인합니까] (http://stackoverflow.com/questions/843277/how-do-i-check-if-a-variable-exists-in-python) 제목은 다음과 같습니다. 이 것은 거의 동일합니다. 두 가지 질문이 어떻게 다른가요? –

답변

3

왜 알아야합니까? 이것 때문에 코드가 깨지면 어쨌든 코드가 잘못되어 수정해야하기 때문일 수 있습니다.

그런데 예상 한대로 또는 if 'x' in globals()을 확인해보십시오.

+2

명확히하기 위해, 당신은 이름을 인용해야합니다 (''지역의 아바타 링크()'). 그러나 첫 단락은 진정한 해결책입니다. +1 – delnan

+0

@delnan 물론; 그것을 반영하기 위해 인용문을 추가했습니다. –

+3

이 질문에 대한 정답이지만, 이와 같은 검사를 받아야하는 경우 코드가 손상 될 수 있다고 Karl의 발언을 고려하십시오. 당신은 현재 증상을 치료하고 있습니다. 원인이 아니라 항상 나쁜 생각입니다. –

1

x는 globals() 또는 locals()에 있는지 확인할 수 있습니다 : 난 항상이 오류 때문에

나는이를 부탁드립니다.

0

파이썬에서는 실제로 설정되지 않은 변수를 사용해서는 안됩니다. 필요한 경우 avatarLink를 없음으로 설정할 수 있습니다.

4

파이썬에서 "허가보다는 용서를 구하는 것이 좋습니다"라고 말합니다. 따라서, 변수에 접근하여 변수에 접근하고 변수가 존재하지 않으면 그 변수를 잡아라.

try: 
    x 
    print "x exists" 
except UnboundLocalError: 
    print "x doesn't exist" 

그러나 나는 이것이 왜 필요하다고 생각하는지 정말로 알고 싶습니다. 일반적으로 값을 확인하기 전에 항상 변수를 설정합니다.

0
try: 
    variable 
except NameError: 
    print "It doesn't Exist!" 
else: 
    print "It exists!" 
관련 문제