다른 모듈에서 호출 된 콜백을 포함하고 전역 변수에 액세스해야하는 프로그램을 작성하고 있습니다.
전역 변수에 할당 된 변경 사항은 원래 할당 만 볼 수있는 콜백 함수에는 나타나지 않습니다. 나는 다른 모듈에서 가져 오기 때문에 추측하고있다.
이 패턴을 작성하는 올바른 방법은 무엇입니까?
파이썬 전역 변수 및 콜백
첫 번째 모듈 :
# a.py
from b import runb
myGlobal=None
def init():
global myGlobal
myGlobal=1
def callback():
print myGlobal
def main():
init()
runb()
if __name__=='__main__':
main()
두 번째 모듈 :이 프로그램은 '1'인쇄를 기대하지만, 대신이 '없음'인쇄합니다
#b.py
def runb():
from a import callback
callback()
편집 : init는 한 번만 호출 할 수 있습니다 (복잡한 프로그램의 단순화입니다)
원형 의존성을 피하는 것이 가장 좋습니다. http://stackoverflow.com/questions/1556387/circular-import-dependency-in-python –
@Scorpion_God :이 링크는 모듈이 아닌 패키지 간의 종속성을 설명합니다. 일반적으로 순환 종속성을 피하는 것이 가장 좋지만 때로는 대안이 좋지 않다는 것을 알고 있습니다. – Photon