如今老闆讓你寫一個監控程序,24小時整年無休的監控大家公司網站服務器的系統情況,當cpu\memory\disk等指標的使用量超過閥值時即發郵件報警,你掏空了全部的知識量,寫出瞭如下代碼程序員
1 while True: 2 if cpu利用率 > 90%: 3 #發送郵件提醒 4 鏈接郵箱服務器 5 發送郵件 6 關閉鏈接 7 if 硬盤使用空間 > 90%: 8 #發送郵件提醒 9 鏈接郵箱服務器 10 發送郵件 11 關閉鏈接 12 if 內存佔用 > 80%: 13 #發送郵件提醒 14 鏈接郵箱服務器 15 發送郵件 16 關閉鏈接
上面的代碼實現了功能,但即便是鄰居老王也看出了端倪,老王親切的摸了下你家兒子的臉蛋,說,你這個重複代碼太多了,每次報警都要重寫一段發郵件的代碼,太low了,這樣幹存在2個問題:服務器
代碼重複過多,一個勁的copy and paste不符合高端程序員的氣質函數
若是往後須要修改發郵件的這段代碼,好比加入羣發功能,那你就須要在全部用到這段代碼的地方都修改一遍網站
只須要把重複的代碼提取出來,放在一個公共的地方,起個名字,之後誰想用這段代碼,就經過這個名字調用就好了spa
1 def 發送郵件(內容): #內容其實就至關於自變量X,最後輸出的發送郵件(X)就是至關於數學當中的Y 2 #發送郵件提醒 3 鏈接郵箱服務器 4 發送郵件 5 關閉鏈接 6 7 8 while True: 9 if cpu利用率 > 90%: 10 發送郵件('CPU報警') 11 if 硬盤使用空間 > 90%: 12 發送郵件('硬盤報警') 13 if 內存佔用 > 80%: 14 發送郵件('內存報警')
定義: 函數是指將一組語句的集合經過一個名字(函數名)封裝起來,要想執行這個函數,只需調用其函數名便可code
特性:blog
減小重複代碼內存
使程序變的可擴展數學
使程序變得易維護ast
1 def sayhi(): #定義函數名,函數命名不要用中文和拼音,很是Low 2 print("豬豬你好!") 3 4 sayhi() #調用函數
1 a,b = 5,8 2 c = a**b 3 print(c) 4 5 轉爲函數表示 6 7 def calculate(x,y): 8 res = x**y #print(res) 9 return res #返回值,意味着函數的終止 10 11 c = calculate(x,y) 12 print(c)