pythonの基礎を学びます:モジュールとパッケージ
一、モジュールとは何か
私たちの普段の開発過程では、Pythonの内蔵機能、あるいは第三者のライブラリ、私たちが使っているPythonの内蔵機能、サードパーティのライブラリなど、いくつかのモジュールと言えます.
たとえば、ファイルを読み書きするときに、ファイル操作のモジュールosを使用します.
よく出会うのではないでしょうか.モジュール、来た!
実際には、Pythonスクリプトファイルごとにモジュールと見なすことができます.
モジュールはディスクファイルとして存在します.1つのモジュールが大きすぎて、多すぎる機能を駆動している場合は、いくつかのコードを分解して別のモジュールを構築することを考慮する必要があります.
モジュール内のコードは、直接実行されるスクリプトであってもよいし、ライブラリ関数のようなコードであってもよく、他のモジュールによってインポート(
すべてのモジュールをPythonモジュールの先頭部分にインポートすることをお勧めします.そして、このような順序で行うことが望ましい. Python標準ライブラリモジュール Pythonサードパーティモジュール カスタムモジュール これはただ約束がこんなにいいと言っているだけで、実はどんな順番でも大丈夫です!!!
二、モジュールの使い方
モジュールとは何か知っているだろうと思います.
では、使い方を見てみましょう.
Pythonでは、あるモジュールをキーワード
この例では、システム
importの使い方
構文
または
[]:オプションを示します.
モジュール関数呼び出し
モジュールをインポートすると、
たとえば
これがモジュールを呼び出す方法です!
モジュールの一部のメソッドのインポート
モジュール内のすべてのメソッドをインポートする必要がない場合があります.したがって、pythonは、インポートする必要があるメソッドのみをインポートする方法を提供します. from modname import name1[, name2[, ... nameN]]
たとえば、モジュールtimeのsleep関数をインポートするには、次の文を使用します.
すべてをインポート
时には、モジュールの名前が长すぎたり、复雑すぎたりして、书く时に不便かもしれません.だから、別名を使ってインポートすることができて、书きやすいです.
エイリアスインポート
エイリアスインポートは、インポート文の後にキーワード
二、カスタムモジュール
pythonに内蔵されたモジュールがある以上、自分のモジュールをカスタマイズして、自分の機能をモジュールにすることができますか?
もちろん大丈夫です.次は自分で実現します.
同フォルダ実装
これはpythonファイルが同じフォルダにある場合です.
次に、同じフォルダの下で2つのpythonファイルを定義します.それぞれ
インポート方法
02_demo.py中
同じフォルダの下で、直接
異なるフォルダ実装
現在、
異なるフォルダの呼び出しでは、test 02ファイルがlearnフォルダの下にあるなど、ファイルパスを追加する必要があるため、
しかし、これは最も完璧ではありません.プロジェクトが大きい場合、フォルダの下に多くのモジュールがあり、それぞれがこのように導入されているかどうかは、面倒ではないかと思います.したがって、pythonでは、ターゲットパスを環境に追加するより簡単な方法も提供されます.
簡単になったのではないでしょうか.
また、自分で定義したモジュールとシステムモジュールが重複している場合は、インポート時にシステムのモジュールを上書きしますよ!
たとえば、
math.pyファイル
mathをインポートすると、システムのmathが上書きされ、カスタマイズされたmathがインポートされます.
最後にもう一つお話しします、バッグ!
三、バッグ
モジュールがある以上、なぜバッグがあるのか、バッグはいったい何なのか.いっしょに来させてください.
私たちは1つのモジュールが通常pythonファイルであることを知っていますが、これはあまりにもばらばらに見えるのではないでしょうか.もし私たちが外出するとき、物が多すぎて、これらのものを入れるためにかばんが必要なのではないでしょうか.だから、パッケージはこの役割で、いくつかの機能が近いモジュールや似ているモジュールを、パッケージと呼ばれる場所に置いています!
このかばんはどうですか.ははは!
では、パッケージとモジュールはいったい何が違うのでしょうか.
パッケージの使用
パッケージはフォルダですが、プログラムによって
まず、
次に、このフォルダの下に
test10.py
test11.py
では、今バッグを案内してみましょう.
私たちは間違っていることに気づきました:私たちのtest 10は定義されていませんが、私たちは定義しているのに、なぜですか?
もともと、
したがって、
正しいです.
かばんはできましたか.
最後の最後に、小さな知識点を話します.
imp.reload()
この関数はどんな役割を果たしますか?
このようなシーンを考えてみると、モジュールは初めてインポートされた後、他のインポートは有効ではありません.モジュールのソースファイルを別のウィンドウで変更して保存しても、モジュールを更新できません.
このような設計の理由は、インポートは、ファイルを見つけてバイトコードにコンパイルし、コードを実行する必要があるオーバーヘッドの大きい操作であり、各ファイル、各プログラムの実行を複数回繰り返すことができないためである.
モジュールがスクリプトにインポートされると、モジュールの最上位部分のコードは一度だけ実行されます.したがって、モジュールの最上位部分のコードを再実行したい場合は、reload()関数を使用します.この関数は、以前にインポートしたモジュールを再インポートします.
私たちの普段の開発過程では、Pythonの内蔵機能、あるいは第三者のライブラリ、私たちが使っているPythonの内蔵機能、サードパーティのライブラリなど、いくつかのモジュールと言えます.
たとえば、ファイルを読み書きするときに、ファイル操作のモジュールosを使用します.
よく出会うのではないでしょうか.モジュール、来た!
実際には、Pythonスクリプトファイルごとにモジュールと見なすことができます.
モジュールはディスクファイルとして存在します.1つのモジュールが大きすぎて、多すぎる機能を駆動している場合は、いくつかのコードを分解して別のモジュールを構築することを考慮する必要があります.
モジュール内のコードは、直接実行されるスクリプトであってもよいし、ライブラリ関数のようなコードであってもよく、他のモジュールによってインポート(
import
)されて呼び出されてもよい.モジュールは、直接実行されるコードブロック、クラス定義、関数定義、またはこれらの組合せを含むことができる.すべてのモジュールをPythonモジュールの先頭部分にインポートすることをお勧めします.そして、このような順序で行うことが望ましい.
二、モジュールの使い方
モジュールとは何か知っているだろうと思います.
では、使い方を見てみましょう.
Pythonでは、あるモジュールをキーワード
import
で導入し、例えばモジュールos
を導入するには、ファイルの最初の場所でimport os
で導入することができる.以下、簡単な例を見てみましょう.# os
import os
#
files = os.listdir('F:\\ \\2018 ( )\\ 、python (1)\\ PPT\\ PPT')
print(files)
この例では、システム
os
モジュールを導入し、このos
モジュールのメソッドを呼び出して、ターゲットディレクトリの下のすべてのファイルをリストします.importの使い方
構文
import module1
import module2
......
import moduleN
または
import module1[, module2[,... moduleN]]
[]:オプションを示します.
モジュール関数呼び出し
モジュールをインポートすると、
.
でモジュール内の関数を呼び出すことができます.実際には、
でメソッドを呼び出すこともできます.しかし、複数のモジュールに同じメソッド名がある場合は、 .
でモジュール内の関数を呼び出さなければなりません.そうしないと衝突します.たとえば
files = os.listdir('F:\\ \\2018 ( )\\ 、python (1)\\ PPT\\ PPT')
これがモジュールを呼び出す方法です!
モジュールの一部のメソッドのインポート
モジュール内のすべてのメソッドをインポートする必要がない場合があります.したがって、pythonは、インポートする必要があるメソッドのみをインポートする方法を提供します.
たとえば、モジュールtimeのsleep関数をインポートするには、次の文を使用します.
from time import sleep, strptime
すべてをインポート
from modname import*
时には、モジュールの名前が长すぎたり、复雑すぎたりして、书く时に不便かもしれません.だから、別名を使ってインポートすることができて、书きやすいです.
エイリアスインポート
エイリアスインポートは、インポート文の後にキーワード
as
を付けるだけです.import numpy
import numpy as np # numpy np
二、カスタムモジュール
pythonに内蔵されたモジュールがある以上、自分のモジュールをカスタマイズして、自分の機能をモジュールにすることができますか?
もちろん大丈夫です.次は自分で実現します.
同フォルダ実装
これはpythonファイルが同じフォルダにある場合です.
次に、同じフォルダの下で2つのpythonファイルを定義します.それぞれ
test.py,02_demo.py
です.test.py
では、次のように定義されています.def sum(a, b):
return a + b
インポート方法
02_demo.py中
#
import test
from test import sum
print(sum(1, 2))
同じフォルダの下で、直接
だけでいいことがわかります!異なるフォルダ実装
現在、
02_demo.py
とlearn
のファイルの下にあるtest02.py
のファイルがあります.ディレクトリは次のとおりです.test02.py
内容def mul(a, b):
return a * b
02_demo.py
でフォルダ間呼び出し#
import learn.test2
from learn import test2
print(test2.mul(1, 5))
異なるフォルダの呼び出しでは、test 02ファイルがlearnフォルダの下にあるなど、ファイルパスを追加する必要があるため、
learn.test02
でインポートされます.しかし、これは最も完璧ではありません.プロジェクトが大きい場合、フォルダの下に多くのモジュールがあり、それぞれがこのように導入されているかどうかは、面倒ではないかと思います.したがって、pythonでは、ターゲットパスを環境に追加するより簡単な方法も提供されます.
'''
2
'''
import sys #
print(sys.path)
#
sys.path.append('.\\learn') #
import test2 as tt
print(tt.mul(1, 10))
簡単になったのではないでしょうか.
また、自分で定義したモジュールとシステムモジュールが重複している場合は、インポート時にシステムのモジュールを上書きしますよ!
たとえば、
learn
フォルダの下にmath.py
ファイルを定義します.math.pyファイル
import math
def tan(x):
return math.tan(x) + 1
mathをインポートすると、システムのmathが上書きされ、カスタマイズされたmathがインポートされます.
#
from learn import math
print(' :', math.tan(30))
import math
print(' :', math.tan(30))
最後にもう一つお話しします、バッグ!
三、バッグ
モジュールがある以上、なぜバッグがあるのか、バッグはいったい何なのか.いっしょに来させてください.
私たちは1つのモジュールが通常pythonファイルであることを知っていますが、これはあまりにもばらばらに見えるのではないでしょうか.もし私たちが外出するとき、物が多すぎて、これらのものを入れるためにかばんが必要なのではないでしょうか.だから、パッケージはこの役割で、いくつかの機能が近いモジュールや似ているモジュールを、パッケージと呼ばれる場所に置いています!
このかばんはどうですか.ははは!
では、パッケージとモジュールはいったい何が違うのでしょうか.
パッケージの使用
パッケージはフォルダですが、プログラムによって
__init__.py
と認識され、モジュールがインポートに成功するには、このフォルダの下に
のファイルを定義する必要があります.まず、
package
というフォルダを新規作成し、__init__.py
というファイルを定義します.次に、このフォルダの下に
test10.py
とtest11.py
のファイルを新規作成します.内容は以下の通りです.test10.py
def subtract(x, y):
return x - y
test11.py
def add(x, y):
return x + y
では、今バッグを案内してみましょう.
#
import package
print(test10.subtract(10, 10))
私たちは間違っていることに気づきました:私たちのtest 10は定義されていませんが、私たちは定義しているのに、なぜですか?
もともと、
__init__.py
ファイルを作成し、__all__
変数を必ずファイルに書き込むには、なぜこの変数が必要なのでしょうか.__init__.py
はパケットのインポート動作を制御しているからである.__init__.py
ファイル
であれば、このパッケージをインポートするだけで、パッケージ内のモジュールはインポートされません.__init__.py
の__all__
変数は、fromパッケージ名importを*制御する際に導入されるモジュール**です.したがって、
__init__.py
に__all__
変数を加えます.__all__ = ['test10', 'test11']
正しいです.
かばんはできましたか.
最後の最後に、小さな知識点を話します.
imp.reload()
この関数はどんな役割を果たしますか?
このようなシーンを考えてみると、モジュールは初めてインポートされた後、他のインポートは有効ではありません.モジュールのソースファイルを別のウィンドウで変更して保存しても、モジュールを更新できません.
このような設計の理由は、インポートは、ファイルを見つけてバイトコードにコンパイルし、コードを実行する必要があるオーバーヘッドの大きい操作であり、各ファイル、各プログラムの実行を複数回繰り返すことができないためである.
モジュールがスクリプトにインポートされると、モジュールの最上位部分のコードは一度だけ実行されます.したがって、モジュールの最上位部分のコードを再実行したい場合は、reload()関数を使用します.この関数は、以前にインポートしたモジュールを再インポートします.
'''
'''
import test
# import test # hahaha
import imp
imp.reload(test) # test