python에서 __all__의 역할은 뭔가요?
조회수 7724회
1 답변
-
__all__
은 string을 element로 가지는 list입니다. 이 string은from <module> import *
에서 export 될 symbol을 의미하지요.예를 들어, 다음의 코드
foo.py
는 symbolbar
,baz
를 export합니다.#foo.py __all__ = ['bar', 'baz'] # import *에서 bar, baz를 export할 것을 명시 waz = 5 bar = 10 def baz(): return 'baz'
이제
temp.py
가foo
모듈을 import하면#temp.py from foo import * #bar, baz가 import 됨 print bar #성공 print baz #성공 print waz # "waz"는 foo.py의 __all__에서 명시하지 않았기 때문에 exception이 발생
단,
__all__
을 명시하지 않고import *
한 경우는 모든 symbol(언더바_
로 시작하는 symbol은 제외)이 import되므로foo.py
의__all__
부분을 지운다면print waz
는 문제없이 실행됩니다.이런 이유로
__init__
파일 안에서__all__
을 설정합니다.
댓글 입력