9

Python に関するいくつかのオープン ソース プロジェクトを見回してきましたが、見慣れないファイルやパターンがたくさんあります。

まず、多くのプロジェクトには というファイルがsetup.pyあり、通常は 1 つの関数が含まれています。

setup(blah, blah, blah)

第 2 に、多くの場合、単に呼び出され__init__.py、ほとんど情報を含まないファイルが含まれています。

第三に、一部の.pyファイルには次のようなステートメントが含まれています。

if __name__ == "__main__"

最後に、Python ファイルを git リポジトリに分割するための「ベスト プラクティス」があるかどうか疑問に思っています。Java では、ファイル分割のアイデアは、クラス構造のために非常に自然に生まれます。Python では、多くのスクリプトにはクラスがまったくなく、プログラムに OOP の側面がある場合もありますが、クラス分割によるクラスはあまり意味がありません。それは単に「コードを最も読みやすくするもの」ですか、それともこれに関するガイドラインはどこかにありますか?

4

3 に答える 3

7

は、配布ユーティリティsetup.pyを使用した Python のモジュール配布の一部です。Python モジュールを簡単にインストールできるので、プロジェクトを Python モジュール全体として配布したい場合に便利です。

__init__.pyPython のパッケージ システムに使用されます。通常、空のファイルは、Python がパッケージとして含まれているディレクトリを認識させるのに十分ですが、その中に別のものを定義することもできます。

最後に、__name__ == '__main__'現在のスクリプトが直接 (コマンド ラインなどから) 実行され、他のスクリプトにインポートされていないことを確認します。Python スクリプトの実行中、1 つのモジュールの__name__プロパティのみが と等しくなり__main__ます。ここでの私の回答、またはそのトピックに関するより一般的な質問も参照してください。

于 2013-03-06T19:34:35.577 に答える
2

これsetup.pydistutilsセットアップ プロセスの一部です。基本的なスクリプトだけでなく、モジュールを配布する場合は、それらのいずれかを用意する必要があります (それでも、後で簡単にモジュールに拡張できるように、1 つ用意しておくことをお勧めします)。

__init__.pyPythonモジュールのインポート プロセスの一部:

init .pyという名前のファイルは、ディスク上のディレクトリを Python パッケージ ディレクトリとしてマークするために使用されます。ファイルがある場合

mydir/spam/ init .py mydir/spam/module.py と mydir がパス上にある場合、module.py のコードを次のようにインポートできます。

spam.module をインポートするか、

from spam import module init .py ファイルを削除すると、Python はそのディレクトリ内のサブモジュールを検索しなくなるため、モジュールのインポートは失敗します。

if __name == "__main__"ファイルがインポートされずに直接実行された場合に実行されるコードを示す方法です。

コードのレイアウト方法については、distfilesドキュメントに this に関する優れたガイドがあります。

于 2013-03-06T19:37:33.760 に答える
2

@pokeの回答に加えて、pythonプロジェクトのディレクトリ構造がどうあるべきかについて、この関連する質問を参照してください。これは、プロジェクトを簡単に実行できるようにする方法に関する別の便利なチュートリアルです

于 2013-03-06T19:37:54.617 に答える