2012-10-04 4 views
-1

나는 변수를 업데이트하지만 다른 변수를 반환하는 스크립트가 있습니다.python 함수에서 전역 변수 사용

예 :

x = "" 
def callMe(): 

    global x 
    x = "test" 
    y = "123" 

    return y 

def main(): 
    y1 = callMe() 
    print y1 
    print x 

if __name__ == "__main__": 
    main() 

여기가 callMe() 함수에 업데이트에도 불구하고, X emtpy의 가치를 얻을.

어떤 아이디어가 있습니까?

UPDATE : 내 현재 스크립트의 작동 방식을 내가 전에 내 스크립트에 잘못

, 이것은이며, 주에서 Z 값 ...

x = "" 
z = "" 
def callMe(): 

    global x 
    x = "test" 
    y = "123" 
    if y: 
     z = y 
    else: 
     z = "dont know" 
    return y 

def main(): 
    y1 = callMe() 
    print y1 
    print x 
    print z 

if __name__ == "__main__": 
    main() 
+5

나를 위해 작동합니다. 어떤 버전의 파이썬이 있습니까? – geoffspear

답변

1

경우에는 표시되지 않습니다 이 모듈을 직접 실행하는 대신 가져 오는 것입니다. main()은 실행되지 않습니다. 그렇지 않으면 작동하지 않아야 할 이유가 없습니다. 당신 있습니다이 모듈로이 코드를 가져 오는 경우

__name__ 모듈의 이름을 반환하지 '__main__' 것입니다. 결과적으로 main()은 호출되지 않고 x의 값은 그대로 유지됩니다. ""

관련 문제