Für globale Funktionen dir()
ist der zu verwendende Befehl (wie in den meisten dieser Antworten erwähnt), der jedoch sowohl öffentliche als auch nicht-öffentliche Funktionen zusammen auflistet.
Zum Beispiel Laufen:
>>> import re
>>> dir(re)
Gibt Funktionen/Klassen wie zurück:
'__all__', '_MAXCACHE', '_alphanum_bytes', '_alphanum_str', '_pattern_type', '_pickle', '_subx'
Einige davon sind im Allgemeinen nicht für den allgemeinen Gebrauch in der Programmierung gedacht (sondern für das Modul selbst, außer im Fall von DunderAliases wie __doc__
, __file__
ect). Aus diesem Grund ist es vielleicht nicht sinnvoll, sie zusammen mit den öffentlichen aufzulisten (so weiß Python, was zu holen ist, wenn man from module import *
).
__all__
kann zur Lösung dieses Problems verwendet werden. Es gibt eine Liste aller öffentlichen Funktionen und Klassen in einem Modul zurück (diejenigen, die nicht beginnen mit Unterstrichen - _
). Siehe Kann jemand __all__ in Python erklären? zur Verwendung von __all__
.
Hier ist ein Beispiel:
>>> 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']
>>>
Alle Funktionen und Klassen mit Unterstrichen wurden entfernt, so dass nur die übrig bleiben, die als öffentlich definiert sind und daher über import *
.
Beachten Sie, dass __all__
ist nicht immer definiert. Wenn sie nicht enthalten ist, wird ein AttributeError
angehoben wird.
Ein Beispiel hierfür ist das Modul ast:
>>> import ast
>>> ast.__all__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'ast' has no attribute '__all__'
>>>