나는 두 파이썬 모듈이 있습니다파이썬 범위/네임 스페이스 문제
//// funcs.py
from classes import *
def func():
d = D()
print "func"
if __name__ == "__main__":
c = C()
//// classes.py
from funcs import *
class C:
def __init__(self):
print "C class"
func()
class D:
def __init__(self):
print "D class"
실행을 funcs.py는 "전역 이름 'D'이 정의되어 있지 않다는 것을 나타내는 NameError를 생성합니다. 그러나 D() 인스턴스의 생성을 주석 처리하면 모든 것이 잘 동작합니다.
왜 이런 일이 발생합니까?
감사
"모듈을 컴파일해야 함"은 기껏해야 오도하는 것입니다. 모듈 코드는로드되고, 컴파일되고 어느쪽으로 든 실행됩니다. 그러나'from m import *'는 그 시점에 모듈에있는 모든 것을 복사하는 반면,'import m '은 모듈 객체에 대한 참조를 제공하므로 나중에 수정을 볼 수 있습니다. – delnan