두 번째 모듈이 순환 가져 오기에서 첫 번째 변수를 수정하도록 허용하고 있지만 작동하지 않는 것 같습니다.왜 파이썬에서 다른 모듈 변수를 변경할 수 없습니까?
2 가지 질문이 있습니다. 1) 언어 개발의 관점에서 이것이 작동하지 않는 이유는 무엇입니까? 2) 약간 다른 방식으로 동일한 작업을 수행 할 수있는 쉬운 해결책이 있습니까? 방법?
a.py :
이import b
test1 = 'a'
test2 = None
test3 = '3'
if __name__ == '__main__':
print test1, test2, test3 #prints 'a', None, 3
b.changeVars()
print test1, test2, test3 #prints 'a', None, 3 (i.e. nothing has changed)
b.py가 : import a
-b.py
시도는, sys.modules
에 대한 항목이 없을 때 항목이
import a
def changeVars():
print a.test1, a.test2, a.test3 #prints 'a', None, 3
a.test1 = 'NEW VAR 1'
a.test2 = 'NEW VAR 2'
a.test3 = 'NEW VAR 3'
print a.test1, a.test2, a.test3 #prints 'NEW VAR 1', 'NEW VAR 2', 'NEW VAR 3'
'가져 오기 __main__으로'하지만 그래,하지 마. –
@ 이그나시오. 그게 그 일을 할 수 있다는 것을 잊어 버렸습니다. 나는 그것에 대해 읽었지만 결코 그것을 한 적이 없다;) – aaronasterling