2011-08-01 9 views
1

component + "_STATUS"또는 + "_DESC"변수가 있는지 확인하고 싶습니다.변수가 있는지 어떻게 확인할 수 있습니까?

다음을 시도했지만 작동하지 않습니다. 그래서, 여기에 내 코드입니다 :

Components = ['SAVE_DOCUMENT', \ 
'GET_DOCUMENT', \ 
'DVK_SEND', \ 
'DVK_RECEIVE', \ 
'GET_USER_INFO', \ 
'NOTIFICATIONS', \ 
'ERROR_LOG', \ 
'SUMMARY_STATUS'] 

for Component in Components: 
    try: 
     eval(Component + "_STATUS") 
     eval(Component + "_DESC") 
    except NameError: 
     print "Missing component " + Component + " information!" 
     sys.exit(StateUnknown) 

답변

4

내가 잘못 될 수도 있지만 내가 (usign 평가없이 - 그것을 사용하기 아주 좋은 없기 때문에)이 다음과 같은 방법을 할 수 있다고 생각 :

경우

Components = ['SAVE_DOCUMENT', 'GET_DOCUMENT', 'DVK_SEND', 'DVK_RECEIVE', 'GET_USER_INFO', 'NOTIFICATIONS', 'ERROR_LOG', 'SUMMARY_STATUS'] 
missed = [x for x in Components if x + "_STATUS" not in locals() or x + "_DESC" not in locals()] 
if missed: 
    print "Missing components: {0:}".format(missed) 
    sys.exit(StateUnknown)   
당신은 그렇지 않으면 당신은 마법처럼 globals()

+0

작품을 사용할 수 있습니다, 당신은 locals()를 사용할 수있는 지역 범위 변수의 존재를 확인해야합니다! :) – Marko

+0

@ 마르코 - 감사합니다) 도움이되기를 바랍니다 –

2
>>> f = 1 
>>> globals() 
{'__builtins__': <module 'builtins' (built-in)>, '__name__': '__main__', 'f': 1, '__doc__': None, '__package__': None} 
>>> 'f' in globals() 
True 
관련 문제