---
# System prepended metadata

title: Python 模組
tags: [python]

---


# Python 模組

###### tags: `python`

[參考課程](https://www.youtube.com/watch?v=Et0DjY2cGiE&list=PL-g0fdC5RMboYEyt6QS2iLb_1m7QcgfHk&index=11)

引述：將程式寫在一個檔案中，此檔案可重複載入使用。

載入 > 使用
先載入模組，再使用模組中的函式或變數

## 基本語法
>import 模組名稱
>import 模組名稱 as 模組別名

## 使用模組
>模組名稱或別名.函式名稱(參數資料)
>模組名稱或別名.變數名稱

## 內建模組
sys
```python=
#載入sys模組 s為sys別名
import sys as s
#使用sys模組
print(s.platform)#印出作業系統
print(s.maxsize)#印出整數型態的最大值
print(s.path)#印出搜尋模組的路徑
```
## 自訂模組

把運算、操作等獨立到另一個檔案中

範例：
step1:建立幾何運算模組
建立檔案 geometry.py檔 定義平面幾何運算用的函式
step2:在主程式中載入與使用

**geometry.py檔**
```python=
#兩點距離
def distance(x1,y1,x2,y2):
    return ((x2-x1)**2+(y2-y1)**2) ** 0.5
#斜率
def slope(x1,y1,x2,y2):
    return (y2-y1)/(x2-x1)
```
**module.py檔**
```python=
import geometry

result = geometry.distance(1,1,5,5)
print("distance",result);

sl = geometry.slope(1,2,5,6)
print("slope",sl)
```
>distance 5.656854249492381
slope 1.0

## 模組路徑

### 搜尋模組路徑 --> sys.path
模組必須要放在此路徑中，才能被找到

### 管理模組
放在專門放模組資料夾，集中在一起
但預設的路徑可能不在新創的資料夾中
因此解決方法：e.g.新創modules
**在模組的搜尋列表中新增路徑**
**sys.path.append("modules")**

## 補充(路徑寫法)：
>' / '：根目錄
' ./ '：當前同級目錄
' ../ '：上級目錄

#### 相對路徑
/  表示相对路径
1. open('檔名1.txt')
2. open('/data/檔名2.txt')
3. open('./data/檔名3.txt')
4. open('../data/檔名4.txt')

#### 絕對路徑
\ 表示絕對路徑

open('C:\\user\\檔名5.txt')

# Python 封包的設計與使用
引述： 包含模組的資料夾，用來整理、分類模組的程式

## 專案檔案配置
![](https://i.imgur.com/GfIGi2y.png)
如果沒有__init_＿.py則此資料夾不會被當封包來看待
__init__.py可以為空檔案

## 基本語法
>import 封包名稱.模組名稱
>import 封包名稱.模組名稱 as 模組別名

## 實作

![](https://i.imgur.com/lrWyBRJ.png)

**point.py檔**
```python=
def distance(x,y):
    return (x**2+y**2)**0.5
```
**line.py檔**
```python=
def len(x1,y1,x2,y2):
    return ((x2-x1)**2) + ((y2-y1)**2) **0.5
def slope(x1,y1,x2,y2):
    return (y2-y1)/(x2-x1)
```
**main.py檔**
```python=
import geometry.point;
result = geometry.point.distance(3,4)
print("距離",result)

import geometry.line
reslut = geometry.line.slope(1,1,3,3)
print("斜率",result)
```















