[TIL. 27] Python - Modules
Modules
モジュールは、変数または関数クラスが集合したファイルです.
モジュールの作成
ファイルを作成し、再利用したい関数、クラス、変数を実装するだけです.
## my_module.py(파일명)
my_module_var = 7
def my_module_func():
return "Hello!"
class MyModuleClass:
pass
モジュールの読み込み
使用輸入
# import<모듈 이름>
import my_module
importの場合、ファイル拡張子のほかに、ファイル名を使用してインポートする必要があります.# <모듈 이름>.<모듈에서 사용하길 원하는 변수/함수/클래스 이름>
my_module.my_module_func()
importロードモジュールを使用する場合は、モジュールの名前を付けることでモジュールを使用できます.moduleを使用するときにモジュールに名前を付ける必要があるのは、どのファイルで関数を見つけることができるかということです.名前を付けない場合は、モジュール内のファイルを表示したくない場合があります.このファイルで関数を検索したいだけです.名前空間や領域をこのように教えるのでnamespaceと呼ばれます.
## main.py
import my_module
print(my_module.my_module_var) # 변수 사용을 위해 모듈 이름을 붙여줌
my_module.my_module_func() # 함수 사용을 위해 모듈 이름을 붙여줌
my_module_class = my_module.MyModuleClass()
from ... import ... 利用する
import
キーワードを使用してモジュールをロードできます.<モジュール名>import<関数/変数/クラス1>、<関数/変数/クラス2>、...、<関数/変数/クラスN>
from my_module import my_module_func, my_module_var
print(my_module_var) # 바로 변수 선언해서 사용
my_module_func() # 함수 바로 사용
これで...import...使用する場合は、モジュールの名前を付けずにモジュールを使用できます.(上はimportでロードされているので、モジュールの名前を付ける必要はありません.import as
1)複数のモジュールをインポートすると、名前の競合によりエラーが発生する可能性があります.
2)異なるモジュールに同じ名前の関数、変数を持つことができる.
3)必要なモジュールの要素名が長すぎる場合
これらの場合、asによって新しい名前を付けることができます.
from my_module import my_func as f1
from my_module2 import my_func as f2
from my_module3 import function_with_name_too_long as f3
f1()
f2()
f3()
my funcをf 1と名前を変更します.また、モジュール名は、下図に示すようにasを使用して新しい名前を付けることもできます.
import my_module as m1
m1.my_module_func()
Package
💡 パッケージとは?
importの使用(packageから)
通常のモジュールのようにインポートして使用できます.
import pkg.mod1
from pkg.mod2 import func2
pkg.mod1.func2()
func2()
pkg.mod1.func 2()のようです.パッケージのインポートに必要なモジュールを使用します.package initalization
場合によってはpackageをインポートする際に初期設定を行う必要があります.init.パッケージの初期設定はpyファイルで実現します.
(パッケージディレクトリのファイル)
1.インポート時のパスの全長を減らす
import pkg.mod1
pkg.mod1.func2()
現在,pkgではmod 1,func 2をimport関数の基本手法として用いており,func 2関数を呼び出すたびにすべてのパスを入力する必要があるため,面倒である.しかし、関数名を直接呼び出すことができれば便利です.このときinit.pyで関数のパスを減らすことができます.# __init__.py
from .mod1 import func2
1) init.まずpyファイルにインポートする関数または変数を書きます.# main.py
from pkg import func2
func2()
2)必要なファイルから...import ... 形式で使用できます.2.変数、関数、クラスの制限
モジュール内のすべての関数が外部に露出することを防止し、内部でのみ使用できます.
all変数で定義します.
all変数のdefault値はすべての関数、変数、クラスであるため、all変数を個別に定義してインポート可能な要素を制限できます.
# __init__.py
from .mod1 import func2
from .mod2 import func3
__all__ = ['func2', 'func3']
initファイルに露出したくない関数を定義する# main.py
from pkg import *
func2()
func3()
func4() ## <== Error. func4 함수는 __all__ 에 정의되지 않았으므로 import 될 수 없음.
all変数はstring値を持つlistであるため、stringを使用してインポートする要素をlistに宣言できます.Reference
この問題について([TIL. 27] Python - Modules), 我々は、より多くの情報をここで見つけました https://velog.io/@jxxwon/TIL.-27-Python-Modulesテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol