函数基本语法及特性
我先復制了下面一段,挺有意思的。
背景提要
現在老板讓你寫一個監控程序,監控服務器的系統狀況,當cpu\memory\disk等指標的使用量超過閥值時即發郵件報警,你掏空了所有的知識量,寫出了以下代碼
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | while?True: ????if?cpu利用率 >?90%: ????????#發送郵件提醒 ????????連接郵箱服務器 ????????發送郵件 ????????關閉連接 ????? ????if?硬盤使用空間 >?90%: ????????#發送郵件提醒 ????????連接郵箱服務器 ????????發送郵件 ????????關閉連接 ????? ????if?內存占用 >?80%: ????????#發送郵件提醒 ????????連接郵箱服務器 ????????發送郵件 ????????關閉連接 |
上面的代碼實現了功能,但即使是鄰居老王也看出了端倪,老王親切的摸了下你家兒子的臉蛋,說,你這個重復代碼太多了,每次報警都要重寫一段發郵件的代碼,太low了,這樣干存在2個問題:
你覺得老王說的對,你也不想寫重復代碼,但又不知道怎么搞,老王好像看出了你的心思,此時他抱起你兒子,笑著說,其實很簡單,只需要把重復的代碼提取出來,放在一個公共的地方,起個名字,以后誰想用這段代碼,就通過這個名字調用就行了,如下
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | def?發送郵件(內容) ????#發送郵件提醒 ????連接郵箱服務器 ????發送郵件 ????關閉連接 ????? while?True: ????? ????if?cpu利用率 >?90%: ????????發送郵件('CPU報警') ????? ????if?硬盤使用空間 >?90%: ????????發送郵件('硬盤報警') ????? ????if?內存占用 >?80%: ????????發送郵件('內存報警') |
?
你看著老王寫的代碼,氣勢恢宏、磅礴大氣,代碼里透露著一股內斂的傲氣,心想,老王這個人真是不一般,突然對他的背景更感興趣了,問老王,這些花式玩法你都是怎么知道的? 老王親了一口你兒子,捋了捋不存在的胡子,淡淡的講,“老夫,年少時,師從京西沙河淫魔銀角大王 ”, 你一聽“銀角大王”這幾個字,不由的嬌軀一震,心想,真nb,怪不得代碼寫的這么6, 這“銀角大王”當年在江湖上可是數得著的響當當的名字,只可惜后期縱欲過度,卒于公元2016年, 真是可惜了,只留下其哥哥孤守當年兄弟倆一起打下來的江山。 此時你看著的老王離開的身影,感覺你兒子跟他越來越像了。。
?
函數的特性
函數的參數與局部變量
形參變量只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只在函數內部有效。函數調用結束返回主調用函數后則不能再使用該形參變量
實參可以是常量、變量、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使參數獲得確定值
def test(x,y,z):print(x)print(y)print(z)test(1,2,3) #自動根據形參順序,與形參一一對應 test(x=1,z=2,y=3) #關鍵字參數,自動對應,與形參順序無關 test(1,z=5,y=16) #關鍵字參數需要全部在右邊,直接賦值可以打亂順序默認參數
默認參數就是定義參數的時候,給形參賦值。
自己看
def test(x,y=3):print(x)print(y) test(1) test(1,y=5) test(1,5)?
1,特點,調用函數的時候,默認參數非必須傳遞
2,用途,
可以提前把一些值固定住,例如默認安裝值
固定鏈接數據庫的端口號
默認安裝值例子:
?
默認端口號例子:
?
?
返回值
要想獲取函數的執行結果,就可以用return語句把結果返回
注意:
?
轉載于:https://www.cnblogs.com/PYlog/p/8623240.html
總結
- 上一篇: 开机时无法进入系统,提示windows
- 下一篇: 2021手机CIS技术趋势总结