2014-05-23 1 views
0

선언되지오류를 생성하지 않고 변수의 존재를 확인하는 방법이 있나요, 단지 false를 돌려

try: 
    a 
except: 
    pass 

결과 :

제외하고는 실행하다 오류가 발생의 테스트
if a in locals():pass 
if a in globals():pass 

결과 : True/False BAS를 반환하는 간단한 사전 구축 된 솔루션이 있습니까

나가서 설명하자면 NameError

생산 변수가 존재하는지 여부 문자열 키가

+1

변수 이름은 globals()에서 문자열 'a'로 사용됩니까? – vaultah

+0

'if'in "in locals() : pass'는 어떨까요? –

+0

'try : [NameError] 제외 : :'의 문제점은 무엇입니까? – jonrsharpe

답변

2

모두 localsglobals 반환 사전 :

>>> a = 1 
>>> "a" in locals() 
True 
>>> "x" in locals() 
False 
>>> "a" in globals() 
True 
>>> "x" in globals() 
False 
>>> 
:

if "a" in locals():pass 
if "a" in globals():pass 

아래의 데모를 참조하십시오 : 따라서

>>> a = 1 
>>> b = 2 
>>> locals() 
{'__package__': None, '__name__': '__main__', '__builtins__': <module 'builtins' (built-in)>, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, 'b': 2, '__doc__': None, 'a': 1} 
>>> globals() 
{'__package__': None, '__name__': '__main__', '__builtins__': <module 'builtins' (built-in)>, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, 'b': 2, '__doc__': None, 'a': 1} 
>>> 

, 당신은 테스트를 위해 문자열을 사용합니다

+0

옙, ta much. – Phoenix