Para las funciones globales dir()
es el comando a usar (como se menciona en la mayoría de estas respuestas), sin embargo, esto enumera las funciones públicas y las funciones no públicas juntas.
Por ejemplo ejecutando:
>>> import re
>>> dir(re)
Devuelve funciones / clases como:
'__all__', '_MAXCACHE', '_alphanum_bytes', '_alphanum_str', '_pattern_type', '_pickle', '_subx'
Algunos de los cuales generalmente no están destinados para el uso de programación general (sino por el módulo en sí, excepto en el caso de DunderAliases como __doc__
, __file__
ect). Por esta razón, puede no ser útil enumerarlos con los públicos (así es como Python sabe qué obtener cuando se usa from module import *
).
__all__
podría usarse para resolver este problema, devuelve una lista de todas las funciones públicas y clases en un módulo (las que no comienzan con guiones bajos _
). Ver
¿Puede alguien explicar __todos__ en Python? para el uso de __all__
.
Aquí hay un ejemplo:
>>> 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']
>>>
Se han eliminado todas las funciones y clases con guiones bajos, dejando solo aquellas que se definen como públicas y, por lo tanto, se pueden usar a través de import *
.
Tenga en cuenta que __all__
no siempre se define. Si no está incluido, AttributeError
se levanta un.
Un caso de esto es con el 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__'
>>>