전역 함수의 dir()
경우 (대부분의 답변에서 언급했듯이) 사용할 명령이지만 공용 함수와 비공개 함수를 모두 나열합니다.
예를 들면 다음과 같습니다.
>>> import re
>>> dir(re)
다음과 같은 함수 / 클래스를 반환합니다.
'__all__', '_MAXCACHE', '_alphanum_bytes', '_alphanum_str', '_pattern_type', '_pickle', '_subx'
그 중 일부는 일반적으로 일반 프로그램 사용에 대한 의미 (그러나 모듈 자체에 의해, 같은 DunderAliases의 경우를 제외되지 않습니다 __doc__
, __file__
요법). 이러한 이유로 공개 목록과 함께 나열하는 것은 유용하지 않을 수 있습니다 (Python은을 사용할 때 무엇을 얻을 수 있는지 알고 있습니다 from module import *
).
__all__
이 문제를 해결하는 데 사용될 수 있으면 모듈의 모든 공용 함수 및 클래스 목록 ( 밑줄로 시작 하지 않는 - _
)을 반환합니다 . 누군가 파이썬에서 __all__을 설명 할 수 있습니까?를 참조하십시오
. 의 사용을 위해 __all__
.
예를 들면 다음과 같습니다.
>>> import re
>>> re.__all__
['match', 'fullmatch', 'search', 'sub', 'subn', 'split', 'findall', 'finditer', 'compile', 'purge', 'template', 'escape', 'error', 'A', 'I', 'L', 'M', 'S', 'X', 'U', 'ASCII', 'IGNORECASE', 'LOCALE', 'MULTILINE', 'DOTALL', 'VERBOSE', 'UNICODE']
>>>
밑줄이있는 모든 함수와 클래스는 제거되었으며 public으로 정의되어 따라서를 통해 사용할 수있는 것만 남습니다 import *
.
__all__
항상 정의 되는 것은 아닙니다. 포함되지 않은 경우AttributeError
있지 않으면가 발생합니다.
이 경우는 ast 모듈의 경우입니다.
>>> import ast
>>> ast.__all__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'ast' has no attribute '__all__'
>>>