Pythonのモジュールについて話す

モジュール

保守可能なコードを作成するために、多くの関数を異なるファイルにグループ化して、各ファイルに含まれるコードが比較的少なくなるようにします。多くのプログラミング言語では、この方法でコードを整理しています。 Pythonでは、.pyファイルはモジュール(Module)と呼ばれます。

**モジュールを使用する利点は何ですか? ****

モジュールを作成すると、他の場所で参照できます。プログラムを作成するときは、組み込みのPythonモジュールやサードパーティのモジュールなど、他のモジュールを参照することがよくあります。

モジュールは、関数名と変数名の間の競合を回避することもできます。同じ名前の関数と変数は、異なるモジュールに格納できます。ただし、組み込みの関数名と競合しないように注意してください。

異なる人が書いたモジュール名が同じ場合はどうなりますか?モジュール名の競合を回避するために、Pythonは、パッケージと呼ばれる、ディレクトリごとにモジュールを編成する方法を導入しました。

abcモジュールとxyzモジュールの名前が他のモジュールと競合していると仮定すると、競合を回避するためにパッケージを介してモジュールを編成できます。この方法は、mycompanyなどの最上位のパッケージ名を選択し、それを次のディレクトリに保存することです。

パッケージが導入された後、最上位のパッケージ名が他のモジュールと競合しない限り、すべてのモジュールが他のモジュールと競合することはありません。これで、abc.pyモジュールの名前はmycompany.abcになり、同様に、xyz.pyのモジュール名はmycompany.xyzになりました。

各パッケージディレクトリの下に__init__。pyファイルがあることに注意してください。このファイルが存在する必要があります。存在しない場合、Pythonはこのディレクトリをパッケージではなく通常のディレクトリとして扱います。 init。py自体がモジュールであり、そのモジュール名がmycompanyであるため、init.pyは空のファイルまたはPythonコードにすることができます。

モジュールを使用する

! /usr/bin/env python3
# - *- coding: utf-8-*-' a test module '
__ author__ ='Michael Liao'import sys
def test():
 args = sys.argv
 iflen(args)==1:print('Hello, world!')
 elif len(args)==2:print('Hello, %s!'% args[1])else:print('Too many arguments!')if __name__=='__main__':test()

1行目と2行目は標準のコメントです。1行目のコメントにより、このhello.pyファイルをUnix / Linux / Macで直接実行できます。2行目のコメントは、.pyファイル自体が標準のUTF-8エンコーディングを使用していることを示しています。

4行目は、モジュールのドキュメントコメントを表す文字列です。モジュールコードの最初の文字列は、モジュールのドキュメントコメントと見なされます。

6行目では、__ author__変数を使用して作成者を記述しているため、ソースコードを公開すると、他の人があなたの名前を見ることができます。

上記はPythonモジュールの標準ファイルテンプレートです

sysモジュールを使用する最初のステップは、モジュール import sysをインポートすることです。sysモジュールをインポートした後、モジュールを指す変数sysがあります。sys変数を使用することにより、sysモジュールのすべての機能にアクセスできます。

sysモジュールにはargv変数があり、リストには、コマンドラインでモジュールを使用するときに入力されたすべてのパラメーターが格納されます。最初のパラメータは常に.pyファイルの名前であるため、argvには少なくとも1つの要素があります。次に例を示します。

python3helloを実行します.pyによって取得されたsys.argvは['hello.py'];
python3helloを実行します.pyMichaelによって取得されたsys.argvは['hello.py', 'Michael]。

ツールスクリプトは、sys.argvを介して使用パラメータを読み取ることです。

最後に、これらの2行のコードに注目してください

if __name__=='__main__':test()

コマンドラインでhelloモジュールファイルを実行すると、Pythonインタープリターは特別な変数__name__を__main__に設定し、helloモジュールが他の場所にインポートされた場合、__ name__は他の場所にあり、if判定は失敗します。 、この種のifテストでは、モジュールがコマンドラインを実行するときに追加のコードを実行できます。最も一般的なのは、テストを実行することです。

といった:

コマンドラインから直接 python3 hello.pyを使用する場合、__ name__ __main __であり、要件を満たしている場合は、test()を実行します。
test.pyからhello.pyモジュールをインポートして使用すると、 __name__がテストされます。満たされない場合、test()は実行されません。

範囲

モジュールでは、多くの関数と変数を定義できますが、他の人が使用したい関数と変数、およびモジュール内でのみ使用したい関数と変数もあります。 Pythonでは、これは_プレフィックスを介して実現されます。
通常の関数名と変数名はpublic(public)であり、abc、x123、PIなどのように直接引用できます。

__xxx__のような変数は、直接引用できる特別な変数ですが、特別な用途があります。たとえば、上記の__author__と__name__は特別な変数です。helloモジュールで定義されたドキュメントのコメントには、特別な変数__doc__を使用してアクセスすることもできます。この変数名を独自の変数に使用しないでください。

xxxや__xxxなどの関数または変数は非公開(非公開)であり、abc、 abcなどのように直接引用しないでください。

プライベート関数と変数を直接参照するのではなく、直接参照する必要があると言う理由は、Pythonにはプライベート関数または変数へのアクセスを完全に制限する方法がないためです。ただし、これはプログラミング手法ではありません。プライベート関数または変数を参照する必要があります。

言い換えれば、それは単なる宣言であり、アクセスしたい場合は引き続きアクセスできます。プライベート関数または変数は他の人から参照されるべきではないので、それらはどのように使用されますか?

ef _private_1(name):return'Hello, %s'% name
def _private_2(name):return'Hi, %s'% name
def greeting(name):iflen(name)3:return_private_1(name)else:return_private_2(name)

モジュール内のgreeting()関数を公開し、private関数で内部ロジックを非表示にして、greeting()関数を呼び出すときに、内部private関数の詳細を気にする必要がないようにします。これは、コードのカプセル化と抽象化の非常に便利なメソッドでもあります。これは:

**外部から参照する必要のない関数はすべてプライベートとして定義され、外部から参照する必要のある関数のみがパブリックとして定義されます。 ****

上記はPythonのモジュールの詳細な内容です。pythonモジュールの詳細については、ZaLou.Cnの他の関連記事に注意してください。

Recommended Posts

Pythonのモジュールについて話す
Pythonでの継承について話す
Pythonで文字列について話す
Pythonの日常について話す
Python機能プログラミングについて話す
pythonでのwheelの使用法
pythonファイルを呼び出すphpについて話す
Pythonの数字は何ですか?
pythonでのタプルの使用法
pythonでのrbの意味を理解する
Pythonでサードパーティモジュールを導入する方法
Python3クローラーでのAjaxの使用
Pythonでサードパーティモジュールをインストールする方法
Pythonでカスタムモジュールを追加する方法
インストールされているモジュールをpythonで表示する方法
Pythonはリスト内の要素をランダムにシャッフルします
Pythonマルチスレッドとプログラムロックについて話す
pythonの関数
2.1 Pythonインタープリター(pythonインタープリター)
pythonでのadbの機能は何ですか
pythonでround関数を使用する方法
Pythonでzip関数を使用する方法
pythonのタブキーはどういう意味ですか
PythonはDoudizhuでカードのシャッフルを実装します
Ubuntuを使用した最初の経験について話す
pythonでformat関数を使用する方法
pythonに最初に精通した、pythonの文法規則
27歳でパイソンを学ぶのはどうですか?
Pythonで型を判断するための最良の方法
03.Pythonエントリの演算子
Pythonの結合関数
12.Python3でのネットワークプログラミング
pythonでステートメントを印刷する
Pythonでのパッケージの導入を理解する方法
Pythonでの同時リクエスト
Ubuntuにpythonをインストールする
Python3のルーチンについて学ぶ
Pythonの基盤を統合する(2)
Pythonでのコンテキスト管理
pythonの算術演算子
pythonダウンロード新しいモジュール
Pythonデータの視覚化:Pythonの有名人は誰ですか?
pythonでguiを書く
PythonでのMongoDBの使用
09.Python3の共通モジュール
PythonのStr文字列
歴史上初めて、PythonはJavaを上回りました!
Pythonでの計算ジオメトリ
pythonでファイルを開く方法は何ですか
pythonで円の領域を見つける方法
Pythonのハードコア操作を1分で学ぶ
Pythonでの同時リクエスト(パート2)
Pythonの基盤を統合する(4)
pythonはゲームという言葉を推測します
Python(6)の基盤を統合する
Ubuntuは最新のPython3をインストールします。
Pythonは推測ゲームを実現します
Python3.9の注目すべき更新ポイント
Python(5)の基盤を統合する
Pythonアプリケーションを3分でコンテナ化
python関数、クラス、モジュール、パッケージ