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 zurück wie:
'__all__', '_MAXCACHE', '_alphanum_bytes', '_alphanum_str', '_pattern_type', '_pickle', '_subx'
Einige davon sind im Allgemeinen nicht für die allgemeine Programmierung Gebrauch gedacht (aber durch das Modul selbst, außer im Fall von DunderAliases wie __doc__
, __file__
ect). Aus diesem Grund ist es möglicherweise nicht sinnvoll, sie mit den öffentlichen aufzulisten (so weiß Python, was bei der Verwendung zu bekommen ist from module import *
).
__all__
könnte verwendet werden, um dieses Problem zu lösen. Es gibt eine Liste aller öffentlichen Funktionen und Klassen in einem Modul zurück (diejenigen, die nicht mit Unterstrichen beginnen - _
). Siehe
Kann jemand __all__ in Python erklären? für die 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, sodass nur diejenigen übrig bleiben, die als öffentlich definiert sind und daher über verwendet werden können import *
.
Beachten Sie, dass dies __all__
nicht immer definiert ist. Wenn es nicht enthalten ist, dann einAttributeError
ausgelöst.
Ein Fall hierfür ist das ast-Modul:
>>> import ast
>>> ast.__all__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'ast' has no attribute '__all__'
>>>