Today I Learnt How to Import

5076 ワード

sys.module


システムにインポートしたモジュールとパッケージが格納されます.辞書の形で保存されています.importパスを再宣言する必要がない機能があります.

built-in modules


pythonが提供する公式ライブラリ.print、lenなどのbuild-in関数はPythonがデフォルトで格納しているライブラリです.次のリンクでリストを表示できます.
Python built_in module index

sys.path


ファイルがシステムに格納されているパス.
['',
'/Users/song-eun-u/anaconda3/bin',
'/Users/song-eun-u/anaconda3/lib/python36.zip',
'/Users/song-eun-u/anaconda3/lib/python3.6',
'/Users/song-eun-u/anaconda3/lib/python3.6/lib-dynload',
'/Users/song-eun-u/anaconda3/lib/python3.6/site-packages',
'/Users/song-eun-u/anaconda3/lib/python3.6/site-packages/aeosa',
'/Users/song-eun-u/anaconda3/lib/python3.6/site-packages/IPython/extensions',
'/Users/song-eun-u/.ipython']
次のパスで表されます.左から右が上位フォルダで、右に曲がるにつれて奥行きが増すと理解できます.対応するパスが見つからない場合は、ModuleNotFoundErrorが発生するリスト形式で表示されます.

sys


Pythonはどのようにsysの経路を見つけますか?
sysをインポートして印刷すればわかります.
🐍
import sys

print(sys)

🚩결과
<module 'sys' (built-in)>
結果に示すようにsysのパスはbuild-inモジュールである.Pythonに保存されているため、別途検索する必要はないことがわかります.

Absolute pathと相対path


絶対パスと相対パス.絶対パスは、その名の通りファイルに読み込まれた絶対パスです.
上のシステム.pathに示すように、リスト形式のアドレスであり、絶対親フォルダユーザーからファイルへの詳細なパスである.たとえば、上記のコードのアドレス:
大韓民国ソウル特別市江南区テヘラン路427号工作塔と同じ住所だ.
アドレスの詳細は間違いありませんが、ファイルのように奥行きの深いアドレスを使う場合は複雑で、毎回面倒です.したがって,相対アドレス探索経路を用いる.ソウル江南区(カンナムグ)に住んでいる人同士の住所を共有すれば.
テヘラン路427号工作塔はすでに江南区で対話しており、前の部分を省略することができる.
相対パスもそうです.モジュールとパッケージが同じファイルに格納されている場合は、親フォルダに宣言することなく、現在のフォルダでフォルダを検索できます.

コンピュータパッケージの作成によるパスの理解



ここにいるよpyは、ユーザーにコードがないことを伝える役割ですが、ディレクトリはパッケージです.
各ファイルには、次のコードが含まれています.
main.py
# absoulte path
#from calculator.add_and_multiply import add_and_multiply 


# relative path
from .calculator.add_and_multiply import add_and_multiply


if __name__ == '__main__':
    print(add_and_multiply(1,2))
add_and_multiply.py
from .multiplication import multiply
# from calculator.multiplication import multiply
def add_and_multiply(a,b):
    return multiply(a,b) + (a+b)
multiplication.py
def multiply(a,b):
    return(a*b)
main.pyにadd and multiplyをインポートしてみます.
 [Errno 2] No such file or directory
このようなエラーが発生し、実行できないという.現在のmain.pyの現在のパスはmainなので、絶対パスを使用する必要があります.

init.pyファイルの役割


ファイルを含むディレクトリがパッケージであることを示します.また、__init__.pyファイルで使用するファイルのパス数を減らすことができます.
python3.3バージョンから__init__.pyがなくてもパッケージとして扱うことができるため、使用する必要はありませんが、以前のバージョンでは作成して使用する必要があります.