# インポート(import)
###### tags: `Python`
## モジュール (module)
ひとつのスクリプトファイルはモジュールとして扱うことができます。
:::info
模組
一個腳本檔案可作為模組來使用。
:::
## パッケージ (package)
複数のモジュールをまとめてパッケージとして扱うことができます。
:::info
包含多個模組則可作為套件(package)使用。
:::
## インポート (import)
パッケージの中からモジュールの機能(クラス、関数、変数...)を取り込む事です。インポート行うことで、様々な処理をする関数を呼ぶだけで処理する事が可能になったりします。
:::info
import指的是從套件裡取出模組的功能(類別class、函數、變數...)。藉由import可以呼叫各式各樣的函數來處理。
:::
## importの使い方
```
import モジュール名
```
```python=
import math
# sqrt : x の平方根を返します。
print('9 の平方根 = ',math.sqrt(9))
```
**Results:**
```
9 の平方根 = 3.0
```
## 別名をつける
「as」を使うことで、インポートしたモジュールに別名をつけることができます。
モジュール名が長い場合はasを使って短い名前を付けることでコードが見やすくなります。
:::info
使用「as」能替import過後的模組取個別名。若模組名稱過長,則可使用as來取個較短的別名,使code更加明瞭。
:::
```
import モジュール名 as 別名
```
```python=
import math as m
print('9 の平方根 = ',m.sqrt(9))
```
**Results:**
```
9 の平方根 = 3.0
```
## fromで省略する
fromを使って、モジュールで定義されたオブジェクト(関数や変数、クラスなど)を指定してインポートできます。
:::info
以from來省略。
:::
```
from モジュール名 import 関数名
```
```python=
from math import sqrt, pi #複数のオブジェクト
print('9 の平方根 = ',sqrt(9))
print('pi = ',pi)
```
**Results:**
```
9 の平方根 = 3.0
pi = 3.141592653589793
```
## import *
importでアスタリスク「*」も使えます。これでimportしたモジュール以下のオブジェクトがすべて使用できます。
:::info
import 也可使用星星符號「*」。這能使import過後的模組,其底下的物件皆能夠使用。
:::
```
from モジュール名 import *
```
```python=
from math import *
print('9 の平方根 = ',sqrt(9))
# pow(x, y), x の y 乗を返します
print('2 の 3 乗 = ', pow(2, 3))
# 数の絶対値を返します。
print('-10 の絶対値 = ',abs(-10))
```
**Results:**
```
9 の平方根 = 3.0
2 の 3 乗 = 8.0
-10 の絶対値 = 10
```
## pythonで自作関数をモジュール化
:::info
於python將自製的函數模組化。
:::
* ファイル構成 (1)
```
file # ディレクトリ
├── definition_function.py # 分割したファイル
└── test_definition_function.py # インポートする側
```
自作関数のファイル
:::info
自製函數檔案
:::
```python=
# definition_function.py
def add(x, y):
return x + y
def sub(x, y):
return x - y
```
実行するファイル
:::info
執行的檔案
:::
```python=
# test_definition_function.py
import definition_function
if __name__ == '__main__':
print( '10 + 6 = ', definition_function.add(10, 6))
print( '8 - 3 = ', definition_function.sub(8, 3))
```
**Results:**
```
10 + 6 = 16
8 - 3 = 5
```
* ファイル構成 (2)
```
file # ディレクトリ
├──file2 # ディレクトリ
│ └── definition_function.py # 分割したファイル
└── test_definition_function.py # インポートする側
```
実行するファイル
test_definition_function.py
:::info
執行的檔案test_definition_function.py
:::
```python=
import file2.definition_function
if __name__ == '__main__':
print( '10 + 6 = ', file2.definition_function.add(10, 6))
print( '8 - 3 = ', file2.definition_function.sub(8, 3))
```
*as や from を利用すれば、長々と記述する必要がなくなるわけである。
:::info
*利用as及from,就不須要做冗長的記述。
:::
```python=
import file2.definition_function as df
if __name__ == '__main__':
print( '10 + 6 = ', df.add(10, 6))
print( '8 - 3 = ', df.sub(8, 3))
```