Per le funzioni globali dir()
è il comando da usare (come menzionato nella maggior parte di queste risposte), tuttavia questo elenca insieme sia le funzioni pubbliche che quelle non pubbliche.
Ad esempio in esecuzione:
>>> import re
>>> dir(re)
Restituisce funzioni / classi come:
'__all__', '_MAXCACHE', '_alphanum_bytes', '_alphanum_str', '_pattern_type', '_pickle', '_subx'
Alcuni dei quali non sono generalmente pensati per un uso generale della programmazione (ma dal modulo stesso, tranne nel caso di DunderAliases come __doc__
, __file__
ecc.). Per questo motivo potrebbe non essere utile elencarli con quelli pubblici (questo è il modo in cui Python sa cosa ottenere durante l'utilizzo from module import *
).
__all__
potrebbe essere usato per risolvere questo problema, restituisce un elenco di tutte le funzioni e classi pubbliche in un modulo (quelle che non iniziano con caratteri di sottolineatura - _
). Vedi
Qualcuno può spiegare __all__ in Python? per l'uso di __all__
.
Ecco un esempio:
>>> 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']
>>>
Tutte le funzioni e le classi con caratteri di sottolineatura sono state rimosse, lasciando solo quelle che sono definite come pubbliche e possono quindi essere utilizzate tramite import *
.
Si noti che __all__
non è sempre definito. Se non è incluso, quindi unAttributeError
viene sollevato un.
Un caso di questo è con il modulo ast:
>>> import ast
>>> ast.__all__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'ast' has no attribute '__all__'
>>>