La conception d'API est une activité artistique. Il doit souvent être simple, facile à comprendre, soigné et peu fastidieux.
Souvent, nous encapsulons une méthode dans la couche inférieure pour une utilisation de haut niveau, et d'autres méthodes ne servent qu'à assister cette méthode.
C'est-à-dire qu'il nous suffit d'exposer cette méthode, et nous n'avons pas besoin de nous soucier de la façon dont cette méthode est implémentée, ni de l'existence d'autres méthodes auxiliaires.
En Python, il existe plusieurs stratégies pour garder les espaces de noms propres.
1. Les noms de variables commençant par un trait de soulignement _
Les variables commençant par un trait de soulignement _ ne seront pas importées lorsque d'autres modules de xxx importent *.
Si vous regardez le code source de decimal, vous constaterez que les modules importés ont été remplacés plusieurs fois par des alias commençant par un trait de soulignement _.
http://hg.python.org/cpython/file/2.7/Lib/decimal.py tel que
import copy as _copy import math as _math import numbers as _numbers
ce n'est pas chiant, c'est juste pour éviter de polluer l'espace de noms
2 Define __all__
La méthode magique de Python est vraiment flexible.
Supposons qu'il y ait 3 méthodes a(), b(), c() dans mon module
Je veux juste exposer a, pas b et c.
À l'heure actuelle, __all__=[a]
Lorsque d'autres modules sont importés depuis xxxmodule import *, seul a est importé.
De plus, lorsque les développeurs lisent le code source et voient __all__, ils savent immédiatement quelles méthodes doivent être exposées, au lieu d'avoir un tas de code sans aucun moyen de démarrer.
3. Après avoir utilisé cette variable, supprimez
via del xxx.
Cela réduit le nombre de variables qui remplissent l'écran dans dir (xxxmodule).
De même, dans le code source de decimal, vous pouvez voir qu'après avoir utilisé le module d'expression régulière re, il a été supprimé à l'aide de del re.
Une autre méthode consiste à placer l'instruction import dans la fonction pour la limiter à la portée locale. Je pense que cette méthode n’est pas pythonique, donc je ne la recommande pas.
Pour plus d'articles liés à la définition standard des espaces de noms en Python, veuillez faire attention au site Web PHP chinois !