# 第七堂 function: def, class
## def
function 要先定義,定義完要呼叫才會執行
```python=
def test():
print("123")
test()
```
因為python是直譯的關係,如果先呼叫 會找不到定義
```python=
test()
def test():
print("123")
```
用function的時機:同樣邏輯的事情做很多次
return 返回值:要拿變數去接、或者印出
```python=
def test():
return 555
print(test())
x = test()
print(x)
```
```python=
def test():
print("444")
return 555
print(test())
```
return 的意思就是結束、離開目前的function
```python=
def test():
return 555
print("444")
print(test())
```
return 可以一次回傳多個值
```python=
def test():
return 1, 3, 5
print(test())
a, b, c = test()
print(a)
print(b)
print(c)
```
如果只拿一個變數接收多個返回值,a會變成tuple元組
```python=
def test():
return 1, 3, 5
a = test()
print(a)
```
在Python裡,function要不要加上return都可以
如果沒有return,拿變數a去接的話會是None
```python=
def test():
print("Hi")
a = test()
print(a)
```
```python=
def test():
print("Hi")
return None
```
## def 帶參數
```python=
def test(t):
print(t)
test(5)
```
兩數相加
```python=
def add(a, b):
return a + b
x = add(5, 8)
print(x)
```
簡單的計算機
```python=
def cal(a, op, b):
if op == "+":
return a + b
if op == "-":
return a - b
if op == "*":
return a * b
if op == "/":
return a / b
x = cal(5, "+", 8)
print(x)
x = cal(5, "-", 8)
print(x)
x = cal(5, "*", 8)
print(x)
x = cal(5, "/", 8)
print(x)
```