Para funções globais dir()é o comando a ser usado (como mencionado na maioria dessas respostas), no entanto, ele lista funções públicas e funções não públicas juntas.
Por exemplo, executando:
>>> import re
>>> dir(re)
Retorna funções / classes como:
'__all__', '_MAXCACHE', '_alphanum_bytes', '_alphanum_str', '_pattern_type', '_pickle', '_subx'
Alguns dos quais não são geralmente destinados para uso programação geral (mas pelo próprio módulo, exceto no caso de DunderAliases como __doc__, __file__ect). Por esse motivo, pode não ser útil listá-los com os públicos (é assim que o Python sabe o que obter ao usar from module import *).
__all__pode ser usado para resolver esse problema, ele retorna uma lista de todas as funções e classes públicas em um módulo (aquelas que não começam com sublinhados - _). Consulte
Alguém pode explicar __all__ em Python? para o uso de __all__.
Aqui está um exemplo:
>>> 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']
>>>
Todas as funções e classes com sublinhados foram removidas, deixando apenas aquelas definidas como públicas e, portanto, podem ser usadas via import *.
Observe que __all__nem sempre é definido. Se não estiver incluído, um AttributeErroré gerado.
Um caso disso é com o módulo ast:
>>> import ast
>>> ast.__all__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'ast' has no attribute '__all__'
>>>