본문 바로가기
Python/Python FAQ

Python 파이썬에서 __all__은 무엇을 의미하는가요?, What does __all__ mean in Python?

by 베타코드 2023. 5. 20.
반응형

질문


나는 __init__.py 파일에서 __all__을 본다. 이것은 무엇을 하는 것인가?


답변


여기서 명시적으로 언급되지는 않았지만, __all__이 사용되는 경우가 바로 이 때문입니다. 모듈의 기호가 언제 내보내지는지를 정의하는 문자열 목록입니다. 모듈에서 from <module> import *가 사용될 때 내보낼 것입니다.

예를 들어, 다음 코드는 foo.py에서 barbaz 기호를 명시적으로 내보냅니다.

__all__ = ['bar', 'baz']

waz = 5
bar = 10
def baz(): return 'baz'

그런 다음이러한 기호를 다음과 같이 가져올 수 있습니다.

from foo import *

print(bar)
print(baz)

# 다음은 모듈에서 내보내지 않은 "waz"로 인해 예외가 발생합니다.
print(waz)

__all__이 위에서 주석 처리된 경우,이 코드는 주어진 네임 스페이스에서 밑줄로 시작하지 않는 모든 기호를 가져 오는 기본 동작으로 완료됩니다.

참조 : https://docs.python.org/tutorial/modules.html#importing-from-a-package

참고 : __all__from <module> import * 동작에만 영향을 미칩니다. __all__에 언급되지 않은 멤버는 모듈 외부에서 여전히 액세스 할 수 있으며 from <module> import <member>를 사용하여 가져올 수 있습니다.

반응형

댓글