API デザインはアート活動です。多くの場合、シンプルで、理解しやすく、きちんとしていて、煩雑ではないことが必要です。
多くの場合、高レベルで使用するためにメソッドを最下層にカプセル化し、他のメソッドはこのメソッドを支援するだけです。
つまり、このメソッドを公開するだけでよく、このメソッドの実装方法や他の補助メソッドの存在を気にする必要はありません。
Python では、名前空間をクリーンに保つための戦略がいくつかあります。
1. underscore_ で始まる変数名
underscore_ で始まる変数は、xxx の他のモジュールが * をインポートするときにインポートされません。
10進数のソースコードを見ると、インポートされたモジュールがアンダースコア_で始まるエイリアスに何度も変更されていることがわかります。
http://hg.python.org/cpython/file/2.7/Lib/decmal.py たとえば
import copy as _copy import math as _math import numbers as _numbers
これは面倒なことではなく、名前空間を汚染しないためです
2. __all__ を定義する
Python の魔法のメソッドは非常に柔軟です。
モジュールに 3 つのメソッド a()、b()、c() があるとします。
b と c ではなく、a だけを公開したいとします。
この時、 __all__=[a]
xxxmodule import *から他のモジュールをインポートする場合は、aのみインポートされます。
そして、開発者がソース コードを読んで __all__ を確認すると、最初から始められないコードの束ではなく、どのメソッドを公開するのかがすぐにわかります。
3. この変数を使用した後、del xxx を通じて削除します
。
これにより、dir (xxxmodule) 内の画面を満たす変数の数が減ります。
10進数のソースコードでも同様に、正規表現モジュール re を使用した後、del re を使用して削除されていることがわかります。
もう 1 つの方法は、インポート ステートメントを関数内に配置してローカル スコープに制限することです。この方法はPython的ではないと思うので、お勧めしません。
Python の名前空間の標準定義に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。