ホームページ > バックエンド開発 > Python チュートリアル > Python における名前空間の標準定義

Python における名前空間の標準定義

高洛峰
リリース: 2017-03-03 15:15:45
オリジナル
1198 人が閲覧しました

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 サイトに注目してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート