函數 function
@piepie01
函數操

定義域與對應域
函數像什麼
箱子?
輸入、做了甚麼、輸出?
用過了!!


用過!?
print("Hello, world!")

input?
output?
延伸閱讀:一連串的function call?
https://ithelp.ithome.com.tw/articles/10158923
例子

arr = [6,3,1]
if arr[0] > arr[1]:
arr[0],arr[1] = arr[1],arr[0]
if arr[1] > arr[2]:
arr[1],arr[2] = arr[2],arr[1]
if arr[0] > arr[1]:
arr[0],arr[1] = arr[1],arr[0]
談天說地
talk sky speak ground
arr = [6,3,1]
if arr[0] > arr[1]:
arr[0],arr[1] = arr[1],arr[0]
if arr[1] > arr[2]:
arr[1],arr[2] = arr[2],arr[1]
if arr[0] > arr[1]:
arr[0],arr[1] = arr[1],arr[0]
談天說地
talk sky speak ground
arr = [6,3,1]
swap(arr,0,1)
swap(arr,1,2)
swap(arr,0,1)
print(arr)
#output :[1,3,6]
不是談天說地
not talk sky speak ground
my_list = [2,3,1]
my_list = my_list.sort()
print(my_list)
s = "231,432"
s.replace(',',' ')
print(s)
練習
都是談天說地
all are talk sky speak ground
輸入不輸入
都是談天說地
all are talk sky speak ground
做事不做事
都是談天說地
all are talk sky speak ground
回傳不回傳


有點
list.count()
string.split()
沒點
max()
sum()

都是函式
function結構
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nec metus justo. Aliquam erat volutpat.

function結構
def my_add(a,b):
c = a+b
return c
a = 2
b = 3
c = my_add(a,b)
print(c)
#output :5

function結構
def my_add(a1,b1):
c1 = a1+b1
return c1
a = 2
b = 3
c = my_add(a,b)
print(c)
#output :5

function結構
def my_add(a1,b1):
def 函式名稱(輸入參數):

function結構
def my_add(a1,b1):
c1 = a1+b1
def 函式名稱(輸入參數):
[縮排]做事

function結構
def my_add(a1,b1):
c1 = a1+b1
return c1
def 函式名稱(輸入參數):
[縮排]做事
[縮排]回傳

function結構
def my_add(a1,b1):
c1 = a1+b1
return c1
print(my_add(1,2))
print(my_add(100,200))
print(my_add(101,201))
print(my_add(1000,2000))
print(my_add('1','2'))
def 函式名稱(輸入參數):
[縮排]做事
[縮排]回傳
狂call猛call

function結構
def my_add(a1,b1):
c1 = a1+b1
return c1
def my_minus(a1,b1):
def my_times(a1,b1):
def my_over(a1,b1):
def 函式名稱(輸入參數):
[縮排]做事
[縮排]回傳
狂call猛call

function執行順序

def my_add(a1,b1):
c1 = a1+b1
return c1
print(my_add(1,2))
print(my_add(100,200))
print(my_add(101,201))
print(my_add(1000,2000))
print(my_add('1','2'))
def 函式名稱(輸入參數):
[縮排]做事
[縮排]回傳
狂call猛call
function執行順序

def my_add(a1,b1):
c1 = a1+b1
return c1
print(my_add(1,2))
print(my_add(100,200))
print(my_add(101,201))
print(my_add(1000,2000))
print(my_add('1','2'))
def 函式名稱(輸入參數):
[縮排]做事
[縮排]回傳
狂call猛call
發生什麼事
function執行順序

def my_add(a1,b1):
c1 = a1+b1
return c1
print(my_add(1,2))
print(my_add(100,200))
print(my_add(101,201))
print(my_add(1000,2000))
print(my_add('1','2'))
def 函式名稱(輸入參數):
[縮排]做事
[縮排]回傳
狂call猛call
發生什麼事
my_add
input要有兩個
function執行順序

def my_add(a1,b1):
c1 = a1+b1
return c1
print(my_add(1,2))
print(my_add(100,200))
print(my_add(101,201))
print(my_add(1000,2000))
print(my_add('1','2'))
def 函式名稱(輸入參數):
[縮排]做事
[縮排]回傳
狂call猛call
發生什麼事
my_add
input要有兩個
c1 = a1+b1
function執行順序

def my_add(a1,b1):
c1 = a1+b1
return c1
print(my_add(1,2))
print(my_add(100,200))
print(my_add(101,201))
print(my_add(1000,2000))
print(my_add('1','2'))
def 函式名稱(輸入參數):
[縮排]做事
[縮排]回傳
狂call猛call
發生什麼事
my_add
input要有兩個
c1 = a1+b1
回傳c1
function執行順序

def my_add(a1,b1):
c1 = a1+b1
return c1
print(my_add(1,2))
print(my_add(100,200))
print(my_add(101,201))
print(my_add(1000,2000))
print(my_add('1','2'))
def 函式名稱(輸入參數):
[縮排]做事
[縮排]回傳
狂call猛call
發生什麼事
my_add
input要有兩個
c1 = a1+b1
回傳c1
my_add(1,2)
function執行順序

def my_add(a1,b1):
c1 = a1+b1
return c1
print(my_add(1,2))
print(my_add(100,200))
print(my_add(101,201))
print(my_add(1000,2000))
print(my_add('1','2'))
def 函式名稱(輸入參數):
[縮排]做事
[縮排]回傳
狂call猛call
發生什麼事
my_add
a1=1,b1=2
my_add(1,2)
function執行順序

def my_add(a1,b1):
c1 = a1+b1
return c1
print(my_add(1,2))
print(my_add(100,200))
print(my_add(101,201))
print(my_add(1000,2000))
print(my_add('1','2'))
def 函式名稱(輸入參數):
[縮排]做事
[縮排]回傳
狂call猛call
發生什麼事
my_add
a1=1,b1=2
c1=3
my_add(1,2)
function執行順序

def my_add(a1,b1):
c1 = a1+b1
return c1
print(my_add(1,2))
print(my_add(100,200))
print(my_add(101,201))
print(my_add(1000,2000))
print(my_add('1','2'))
def 函式名稱(輸入參數):
[縮排]做事
[縮排]回傳
狂call猛call
發生什麼事
my_add
a1=1,b1=2
c1=3
回傳c1
my_add(1,2)
function執行順序

def my_add(a1,b1):
c1 = a1+b1
return c1
print(my_add(1,2))
print(my_add(100,200))
print(my_add(101,201))
print(my_add(1000,2000))
print(my_add('1','2'))
def 函式名稱(輸入參數):
[縮排]做事
[縮排]回傳
狂call猛call
發生什麼事
my_add
a1=1,b1=2
c1=3
回傳c1
my_add(1,2)
function執行順序

def my_add(a1,b1):
c1 = a1+b1
return c1
print(my_add(1,2))
print(my_add(100,200))
print(my_add(101,201))
print(my_add(1000,2000))
print(my_add('1','2'))
def 函式名稱(輸入參數):
[縮排]做事
[縮排]回傳
狂call猛call
發生什麼事
my_add
a1=1,b1=2
c1=3
回傳c1
my_add(1,2)
3
print(3)
function執行順序

print(my_add(1,2))
print(my_add(100,200))
print(my_add(101,201))
print(my_add(1000,2000))
print(my_add('1','2'))
def my_add(a1,b1):
c1 = a1+b1
return c1
def 函式名稱(輸入參數):
[縮排]做事
[縮排]回傳
狂call猛call
function輸入不輸入

def make_me_a_table():
l = []
for _ in range(100):
l.append(0)
return l
def 函式名稱(輸入參數):
[縮排]做事
[縮排]回傳
狂call猛call
function回傳不回傳

def print_the_largest_one(my_list):
maximum = max(my_list)
print(maximum)
return
def 函式名稱(輸入參數):
[縮排]做事
[縮排]回傳
狂call猛call
function做事(?

def do_nothing():
pass
def 函式名稱(輸入參數):
[縮排]做事
[縮排]回傳
狂call猛call
練習
https://www.csie.ntu.edu.tw/~b05902031/func.py
用它,喚它,使用它,使喚它
3034 | 西瓜與1A2B |
練習
Function--GCD練習
做它,製它,製作它
神奇的function-int, list在傳入函數時的比較

def ha(list1):
list1[0]+=1
return
def haha(i):
i+=1
return
my_list = [1]
my_i = 1
ha(my_list)
haha(my_i)
print(my_list)
print(my_i)
def 函式名稱(輸入參數):
[縮排]做事
[縮排]回傳
狂call猛call

def list_test(my_list):
my_list[0]+=1
print('list in function : {}'.format(id(my_list)))
return
def int_test(my_int):
my_int+=1
print('int in function : {}'.format(id(my_int)))
return
li = [1,2,3,4]
a = 1
print('list outside : {}'.format(id(li)))
print('int outside : {}'.format(id(a)))
list_test(li)
int_test(a)
def 函式名稱(輸入參數):
[縮排]做事
[縮排]回傳
狂call猛call
https://vinta.ws/code/python-的參數傳遞是-call-by-assignment.html
神奇的function-int, list在傳入函數時的比較
ID
回傳某變數的內存位置
print(id(var))
神奇的function-函數外的變數

def ha():
print(my_list)
return
def haha():
print(my_i)
return
my_list = [1]
my_i = 1
ha()
haha()
def 函式名稱(輸入參數):
[縮排]做事
[縮排]回傳
狂call猛call

def ha():
my_list = [1]
return
def haha():
my_i = 1
return
ha()
haha()
print(my_list)
print(my_i)
def 函式名稱(輸入參數):
[縮排]做事
[縮排]回傳
狂call猛call
不神奇的function-函數內的變數
全域變數VS區域變數

區域變數:函式中所宣告的變數
全域變數:非函式中所宣告的變數
def 函式名稱(輸入參數):
[縮排]做事
[縮排]回傳
狂call猛call
延伸閱讀
http://www.geego.com.tw/technical-discussion-forum/tech-tips-buffer-overflow-stack-frame-%E6%95%99%E5%AD%B8-%E7%89%A9%E4%BB%B6/
全域變數VS區域變數

def my_add(a1,b1):
return a1+b1
def my_minus(a1,b1):
return a1-b1
def 函式名稱(輸入參數):
[縮排]做事
[縮排]回傳
狂call猛call
參數類型傳遞
1.傳入的參數如果是list or dict.....,修改後會影響函數外面的那個變數
2.傳入的參數如果是int or float......,修改後不影響函數外的那個變數
全域VS區域
1.函數間的區域變數無法互相存取
2.全域變數可以在函數中被存取出來
兩件完全不相干的事
單純就是科普
simple is science
def add_everything(*argv):
return sum(argv)
print(add_everything(1,2,3,4))
單純就是科普
simple is science
def square(inp):
return inp*inp
def func(name,times):
def iters(base):
res = base
for i in range(times):
res = name(res)
return res
return iters
print(func(square,3)(2))
函式function
By piepie01
函式function
- 924