2016-11-14 2 views
1

나는 도움이되었지만 충분하지 않은 this thread에서 왔습니다. 내 사건은 약간 다르지만 가장 중요한 것은 내 상황이다 : 나는 1000 + 라인의 코드를 하나의 파일로 리팩토링하고 있으므로, 뭔가의 이름을 바꾸면 아주 빨리 고통스럽게 될 수있다. 3 개 파일간에 가져 오기가있는 전역 변수

그래서 나는 3에 내 파일을 분할했습니다

나는 모든 전역 변수를 정의한있는
  • settings.py이 ( 많이있다 - 주로 부울 및 문자열)
  • 싱크로. 변경할 수 있습니다 그 값도 내가 여기에 물건을 단순화 것이다 그들에게

을 변경할 수 있습니다

  • groups.py을 평.

    settings.py :

    MY_VAR = "plane" 
    

    synchro.py :

    from settings import * 
    import groups 
    
    def main(): 
        global MY_VAR 
        MY_VAR = "boat" 
        groups.update() 
    

    groups.py : 내가 대신 from settings import *import settings를 작성하는 노력

    from settings import * 
    
    def update(): 
        print MY_VAR # will print "plane" instead of "boat" 
    

    하지만 경우에 python에서 global settings.MY_VAR은 오류이며 인식 할 수 없다는 것을 나타냅니다. 줄을 제거하면이 표시됩니다.

    그럼이 작업을 가장 빠르고 쉽게 할 수있는 방법은 무엇입니까? 당신의 도움이

  • 답변

    0

    아래처럼해야에 대한

    감사합니다, 그것 때문에 네임 스페이스 오염 원인, from settings import *을 할 추천하고 열심히 일을 나중에 디버깅 할 수 있도록 없습니다. 내가 만약 글로벌 사용을 최소화하려고하지만 난 보통 같은 파일 내에서 글로벌 사용 수

    settings.py

    MY_VAR = "plane" 
    

    synchro.py :

    import settings 
    import groups 
    
    def main(): 
        # no need to declare global here, access trough settings namespace instead 
        settings.MY_VAR = "boat" 
        groups.update() 
    

    groups.py :

    import settings 
    
    def update(): 
        print settings.MY_VAR # will print "plane" at first, after synchro main, MY_VAR should carry 'boat' 
    
    +0

    감사합니다. –