2009-12-02 5 views
3

은의 우리가 모듈 m 있다고 가정 해 봅시다 :파이썬에서 로컬 모듈을 참조하는 방법은 무엇입니까?

var = None 

def get_var(): 
    return var 

def set_var(v): 
    var = v 

예상대로 set_var()가에 v를 저장하지 않기 때문이 작동하지 않습니다 모듈 전체 var. 대신 로컬 변수 var이 생성됩니다.

그래서 나는 모듈 m의 구성원 인 자체 set_var() 내에서 모듈 m을 참조하는 방법이 필요합니다. 어떻게해야합니까?

답변

9

Jeffrey Aylesworth's answer과 같이 실제로 OP의 목표를 달성하기 위해 로컬 모듈에 대한 참조가 필요하지 않습니다. global 키워드는이 목표를 달성 할 수 있습니다.

그러나 OP 제목에 응답하려면 파이썬에서 로컬 모듈을 참조하는 방법은 무엇입니까? :로

import sys 

var = None 

def set_var(v): 
    sys.modules[__name__].var = v 

def get_var(): 
    return var 
10
def set_var(v): 
    global var 
    var = v 

글로벌 키워드를 사용하면 함수에서 전역 변수를 변경할 수 있습니다.

3

A, I 파이썬 3에서 다음 사항을 추가하고 싶습니다, 당신은 가장 가까운 둘러싸고있는 범위에서 변수를 액세스보다 일반적으로 수 제프리의 대답에 후속 :

def set_local_var(): 

    var = None 

    def set_var(v): 
     nonlocal var 
     var = v 

    return (var, set_var) 

# Test: 
(my_var, my_set) = set_local_var() 
print my_var # None 
my_set(3) 
print my_var # Should now be 3 

(주의 할 : 나는 파이썬 3을 가지고 있지 않기 때문에 이것을 테스트하지 않았다.)

관련 문제