90%:#發(fā)送郵件提醒連接郵箱服務(wù)器發(fā)送郵件關(guān)閉連接if硬盤(pán)使用空間>90%:#發(fā)送郵件提醒連接郵箱服務(wù)器發(fā)送郵件關(guān)閉連接if內(nèi)存占用>80%:#發(fā)送郵件提醒連接郵箱服務(wù)器發(fā)送郵件關(guān)閉連接上面的代碼實(shí)" />

日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python函數(shù)編程——函數(shù)簡(jiǎn)介

系統(tǒng) 1765 0

Python函數(shù)編程——函數(shù)簡(jiǎn)介

引子

現(xiàn)在老板讓你寫(xiě)一個(gè)監(jiān)控程序,24小時(shí)全年無(wú)休的監(jiān)控你們公司網(wǎng)站服務(wù)器的系統(tǒng)狀況,當(dāng)cpu\memory\disk等指標(biāo)的使用量超過(guò)閥值時(shí)即發(fā)郵件報(bào)警,你掏空了所有的知識(shí)量,寫(xiě)出了以下代碼

          
            while True:
    if cpu利用率 > 90%:
        #發(fā)送郵件提醒
        連接郵箱服務(wù)器
        發(fā)送郵件
        關(guān)閉連接
    if 硬盤(pán)使用空間 > 90%:
        #發(fā)送郵件提醒
        連接郵箱服務(wù)器
        發(fā)送郵件
        關(guān)閉連接
    if 內(nèi)存占用 > 80%:
        #發(fā)送郵件提醒
        連接郵箱服務(wù)器
        發(fā)送郵件
        關(guān)閉連接
          
        

上面的代碼實(shí)現(xiàn)了功能,但即使是鄰居老王也看出了端倪,老王親切的摸了下你家兒子的臉蛋,說(shuō),你這個(gè)重復(fù)代碼太多了,每次報(bào)警都要重寫(xiě)一段發(fā)郵件的代碼,太low了,這樣干存在2個(gè)問(wèn)題:

1、代碼重復(fù)過(guò)多,一個(gè)勁的copy and paste不符合高端程序員的氣質(zhì)。

2、果日后需要修改發(fā)郵件的這段代碼,比如加入群發(fā)功能,那你就需要在所有用到這段代碼的地方都修改一遍。

你覺(jué)得老王說(shuō)的對(duì),你也不想寫(xiě)重復(fù)代碼,但又不知道怎么搞,老王好像看出了你的心思,此時(shí)他抱起你兒子,笑著說(shuō),其實(shí)很簡(jiǎn)單, 只需要把重復(fù)的代碼提取出來(lái),放在一個(gè)公共的地方,起個(gè)名字,以后誰(shuí)想用這段代碼,就通過(guò)這個(gè)名字調(diào)用就行了 ,如下:

          
            def 發(fā)送郵件(內(nèi)容)
    #發(fā)送郵件提醒
    連接郵箱服務(wù)器
    發(fā)送郵件
    關(guān)閉連接
   
while True:
    if cpu利用率 > 90%:
        發(fā)送郵件('CPU報(bào)警')
    if 硬盤(pán)使用空間 > 90%:
        發(fā)送郵件('硬盤(pán)報(bào)警')
    if 內(nèi)存占用 > 80%:
        發(fā)送郵件('內(nèi)存報(bào)警')
          
        

你看著老王寫(xiě)的代碼,氣勢(shì)恢宏、磅礴大氣,代碼里透露著一股內(nèi)斂的傲氣,心想,老王這個(gè)人真是不一般,突然對(duì)他的背景更感興趣了,問(wèn)老王,這些花式玩法你都是怎么知道的? 老王親了一口你兒子,捋了捋不存在的胡子,淡淡的講,“老夫,年少時(shí),師從京西沙河淫魔銀角大王 ”, 你一聽(tīng)“銀角大王”這幾個(gè)字,不由的嬌軀一震,心想,真nb,怪不得代碼寫(xiě)的這么6, 這“銀角大王”當(dāng)年在江湖上可是數(shù)得著的響當(dāng)當(dāng)?shù)拿郑豢上Ш笃诳v欲過(guò)度,卒于公元2019年, 真是可惜了,只留下其哥哥孤守當(dāng)年兄弟倆一起打下來(lái)的江山。 此時(shí)你看著的老王離開(kāi)的身影,感覺(jué)你兒子跟他越來(lái)越像了。。

一、基本定義

1、函數(shù)是什么?

函數(shù)一詞來(lái)源于數(shù)學(xué),但編程中的「函數(shù)」概念,與數(shù)學(xué)中的函數(shù)是有很大不同的,具體區(qū)別,我們后面會(huì)講,編程中的函數(shù)在英文中也有很多不同的叫法。在BASIC中叫做subroutine(子過(guò)程或子程序),在Pascal中叫做procedure(過(guò)程)和function,在C中只有function,在Java里面叫做method。

定義: 函數(shù)是指將一組語(yǔ)句的集合通過(guò)一個(gè)名字(函數(shù)名)封裝起來(lái),要想執(zhí)行這個(gè)函數(shù),只需調(diào)用其函數(shù)名即可。

特性:

1、減少重復(fù)代碼。

2、使程序變的可擴(kuò)展。

3、使程序變得易維護(hù)。

2、語(yǔ)法定義

          
            def sayhi():#函數(shù)名
    print("Hello, I'm nobody!")
sayhi() #調(diào)用函數(shù)
          
        

可以帶參數(shù):

          
            #下面這段代碼
a,b = 5,8
c = a**b
print(c)
#改成用函數(shù)寫(xiě)
def calc(x,y):
    res = x**y
    return res #返回函數(shù)執(zhí)行結(jié)果
c = calc(a,b) #結(jié)果賦值給c變量
print(c)
          
        

參數(shù)可以讓你的函數(shù)更靈活,不只能做死的動(dòng)作,還可以根據(jù)調(diào)用時(shí)傳參的不同來(lái)決定函數(shù)內(nèi)部的執(zhí)行流程。

二、函數(shù)的參數(shù)

形參變量

只有在被調(diào)用時(shí)才分配內(nèi)存單元,在調(diào)用結(jié)束時(shí),即刻釋放所分配的內(nèi)存單元。因此,形參只在函數(shù)內(nèi)部有效。函數(shù)調(diào)用結(jié)束返回主調(diào)用函數(shù)后則不能再使用該形參變量。

實(shí)參

可以是常量、變量、表達(dá)式、函數(shù)等,無(wú)論實(shí)參是何種類(lèi)型的量,在進(jìn)行函數(shù)調(diào)用時(shí),它們都必須有確定的值,以便把這些值傳送給形參。因此應(yīng)預(yù)先給實(shí)參賦值。

Python函數(shù)編程——函數(shù)簡(jiǎn)介_(kāi)第1張圖片

1、默認(rèn)參數(shù)

          
            def stu_register(name,age,country,course):
    print("----注冊(cè)學(xué)生信息------")
    print("姓名:",name)
    print("age:",age)
    print("國(guó)籍:",country)
    print("課程:",course)
stu_register("王山炮",22,"CN","python_devops")
stu_register("張叫春",21,"CN","linux")
stu_register("劉老根",25,"CN","linux")
          
        

發(fā)現(xiàn) country 這個(gè)參數(shù) 基本都 是”CN”, 就像我們?cè)诰W(wǎng)站上注冊(cè)用戶(hù),像國(guó)籍這種信息,你不填寫(xiě),默認(rèn)就會(huì)是 中國(guó), 這就是通過(guò)默認(rèn)參數(shù)實(shí)現(xiàn)的,把country變成默認(rèn)參數(shù)非常簡(jiǎn)單。

          
            def stu_register(name,age,course,country="CN"):
          
        

這樣,這個(gè)參數(shù)在調(diào)用時(shí)不指定,那默認(rèn)就是CN,指定了的話,就用你指定的值。

另外,你可能注意到了,在把country變成默認(rèn)參數(shù)后,我同時(shí)把它的位置移到了最后面,為什么呢?

2、關(guān)鍵參數(shù)

正常情況下,給函數(shù)傳參數(shù)要按順序,不想按順序就可以用關(guān)鍵參數(shù),只需指定參數(shù)名即可(指定了參數(shù)名的參數(shù)就叫關(guān)鍵參數(shù)), 但記住一個(gè)要求就是,關(guān)鍵參數(shù)必須放在位置參數(shù)(以位置順序確定對(duì)應(yīng)關(guān)系的參數(shù))之后

          
            def stu_register(name, age, course='PY' ,country='CN'):
    print("----注冊(cè)學(xué)生信息------")
    print("姓名:", name)
    print("age:", age)
    print("國(guó)籍:", country)
    print("課程:", course)
          
        

調(diào)用可以這樣

          
            stu_register("王山炮",course='PY', age=22,country='JP' )
          
        

但絕不可以這樣

          
            stu_register("王山炮",course='PY',22,country='JP' )
          
        

當(dāng)然這樣也不行

          
            stu_register("王山炮",22,age=25,country='JP' )
          
        

這樣相當(dāng)于給age賦值2次,會(huì)報(bào)錯(cuò)!

注意,參數(shù)優(yōu)先級(jí)順序是 位置參數(shù)>關(guān)鍵參數(shù)

3、非固定參數(shù)

若你的函數(shù)在定義時(shí)不確定用戶(hù)想傳入多少個(gè)參數(shù),就可以使用非固定參數(shù)。

          
            def stu_register(name,age,*args): # *args 會(huì)把多傳入的參數(shù)變成一個(gè)元組形式
    print(name,age,args)
stu_register("Alex",22)
#輸出
#Alex 22 () #后面這個(gè)()就是args,只是因?yàn)闆](méi)傳值,所以為空
stu_register("Jack",32,"CN","Python")
#輸出
# Jack 32 ('CN', 'Python')
          
        

還可以有一個(gè)**kwargs

          
            def stu_register(name,age,*args,**kwargs): # *kwargs 會(huì)把多傳入的參數(shù)變成一個(gè)dict形式
    print(name,age,args,kwargs)
stu_register("Alex",22)
#輸出
#Alex 22 () {}#后面這個(gè){}就是kwargs,只是因?yàn)闆](méi)傳值,所以為空
stu_register("Jack",32,"CN","Python",sex="Male",province="ShanDong")
#輸出
# Jack 32 ('CN', 'Python') {'province': 'ShanDong', 'sex': 'Male'}
          
        

更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 介休市| 子长县| 屏南县| 华蓥市| 宁安市| 石柱| 东城区| 剑川县| 安多县| 四川省| 和林格尔县| 清河县| 徐汇区| 镇雄县| 铜陵市| 元朗区| 汤原县| 沙湾县| 株洲市| 屏东县| 商丘市| 林芝县| 大埔区| 南汇区| 应城市| 伊通| 平陆县| 乐清市| 县级市| 山西省| 连云港市| 城口县| 封开县| 东莞市| 林州市| 拜泉县| 南投市| 淳化县| 齐河县| 和龙市| 桃园市|