pythonモジュールとその中の関数を書くとき、私は部外者にさらされることになっているいくつかの「パブリック」関数がありますが、見られると思われる他の「プライベート」関数とローカルおよび内部で使用されます。
私はpythonで絶対的なプライベート関数はありません。しかし、「パブリック」関数と「プライベート」関数を区別するための最良の、最もきちんとした、または最も使用されるスタイルは何ですか?
私が知っているスタイルのいくつかをリストします:
__all__
は、その「パブリック」関数を示すモジュールファイル内にあります( python __all__モジュールレベル変数は何ですか? )人々が使用する他のアイデアや慣習はありますか?
どうもありがとうございました!
Pythonの Class モジュールドキュメントから:
Pythonには、オブジェクト内部からしかアクセスできないプライベートのインスタンス変数は存在しません。ただし、ほとんどのPythonコード:アンダースコアで始まる名前(_spamなど)は、APIの非公開部分として扱われる必要があります。関数、メソッド、またはデータメンバー)実装の詳細と見なされ、予告なく変更される場合があります。
クラスプライベートメンバには有効なユースケースがあるため(つまり、サブクラスで定義された名前と名前の衝突を避けるため)、名前マングリングと呼ばれるこのようなメカニズムのサポートは制限されています。 __spam(少なくとも2つの先行アンダースコア、最大1つの後続アンダースコア)の形式の識別子は、_classname__spamにテキストで置き換えられます。classnameは、先頭のアンダースコアを削除した現在のクラス名です。このマングリングは、クラスの定義内で発生する限り、識別子の構文上の位置に関係なく行われます。