Pour les fonctions globales dir()
c'est la commande à utiliser (comme mentionné dans la plupart de ces réponses), mais elle répertorie à la fois les fonctions publiques et les fonctions non publiques.
Par exemple en cours d'exécution:
>>> import re
>>> dir(re)
Renvoie des fonctions / classes comme:
'__all__', '_MAXCACHE', '_alphanum_bytes', '_alphanum_str', '_pattern_type', '_pickle', '_subx'
Certains d'entre eux ne sont généralement pas destinés à une utilisation générale de la programmation (mais par le module lui-même, sauf dans le cas de DunderAliases comme __doc__
, __file__
ect). Pour cette raison, il peut ne pas être utile de les répertorier avec les public (c'est ainsi que Python sait quoi obtenir lors de l'utilisation from module import *
).
__all__
pourrait être utilisé pour résoudre ce problème, il renvoie une liste de toutes les fonctions et classes publiques dans un module (celles qui ne commencent pas par des traits de soulignement - _
). Voir
Quelqu'un peut-il expliquer __all__ en Python? pour l'utilisation de__all__
.
Voici un exemple:
>>> 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']
>>>
Toutes les fonctions et classes avec des traits de soulignement ont été supprimées, ne laissant que celles qui sont définies comme publiques et peuvent donc être utilisées via import *
.
Notez que ce __all__
n'est pas toujours défini. S'il n'est pas inclus, un AttributeError
est levé.
Un cas de ceci est avec le module ast:
>>> import ast
>>> ast.__all__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'ast' has no attribute '__all__'
>>>