2011-11-28 4 views
0

다음과 같은 문제가 있습니다. 파이썬 모듈에서 전역 변수가 몇 개 있으며 각 변수를 제외한 일반적인 전역 변수가 있습니다. 그들 중 하나가 일반적인 기능을 사용하여 정의되었는지 테스트하고 싶습니다. 이 생각 :python : 전역 변수를 매개 변수로받는 함수를 만들고 정의 된 경우 테스트합니다.

def isDefined(variable):  
    try: 
     variable 
     return True   
    except NameError as error:   
     return False 

하지만 작동하지 않습니다. 누구나 어떻게 할 생각이 있습니까? 감사합니다.

답변

4

물론 변수를 문자열로 전달해야합니다. 그렇지 않으면 항상 NameError가 발생합니다.

globals 내장 파이썬에서 모듈 사전 - 글로벌 변수가 저장됩니다.

def is_defined(variable): 
    return variable in globals() 

tomato = 42 

is_defined ("tomato") 

은 (어떤 이유로 당신이 문자열로 변수 이름을 가질 수 없습니다 생각한다면, 좀 더 상황에 맞는 정보를 추가, 그래서 그에 따라 조정 답을 할 수 있습니다.)

는 전역 변수를 설정하려면 기본값 :

def set_var(variable, value=0): 
    globals()[variable] = value 
+0

변수의 이름은 어떻게 얻을 수 있습니까? – leBla

+0

내가 원하는 것은 매개 변수가있는 매개 변수와 기본 설정자라는 두 개의 매개 변수를 추가하는 것입니다. getter에서 변수가 정의되어 있는지 테스트하고 싶습니다. 그렇지 않은 경우 두 번째 설정기를 통해 기본값으로 설정됩니다. – leBla

+0

변수의 이름은 코드에 따라 어떻게 달라 집니까? globals(). keys()는 모든 변수 이름뿐만 아니라 모듈의 모든 함수 및 클래스 이름을 제공합니다. – jsbueno

관련 문제