函数和常用模块【day04】:函数参数及调用(二)
本節(jié)內(nèi)容
1、為什么要有參數(shù)
2、返回值
3、有參數(shù)函數(shù)調(diào)用
一、為什么要有參數(shù)?
無參數(shù)實(shí)現(xiàn)
def CPU報(bào)警郵件()#發(fā)送郵件提醒連接郵箱服務(wù)器發(fā)送郵件關(guān)閉連接def 硬盤報(bào)警郵件()#發(fā)送郵件提醒連接郵箱服務(wù)器發(fā)送郵件關(guān)閉連接def 內(nèi)存報(bào)警郵件()#發(fā)送郵件提醒連接郵箱服務(wù)器發(fā)送郵件關(guān)閉連接while True:if cpu利用率 > 90%:CPU報(bào)警郵件()if 硬盤使用空間 > 90%:硬盤報(bào)警郵件()if 內(nèi)存占用 > 80%:內(nèi)存報(bào)警郵件()有參數(shù)實(shí)現(xiàn)
def 發(fā)送郵件(郵件內(nèi)容)#發(fā)送郵件提醒連接郵箱服務(wù)器發(fā)送郵件關(guān)閉連接while True:if cpu利用率 > 90%:發(fā)送郵件("CPU報(bào)警了。")if 硬盤使用空間 > 90%:發(fā)送郵件("硬盤報(bào)警了。")if 內(nèi)存占用 > 80%:發(fā)送郵件("內(nèi)存報(bào)警了。")二、返回值
之前在day3-函數(shù)介紹中提到了return關(guān)鍵字,但是那個(gè)只是提到,并沒有詳細(xì)的介紹的return關(guān)鍵字的用法,下面我們就來詳細(xì)的闡述一下。
1、return作用
return其實(shí)有兩個(gè)作用:
需要用一個(gè)變量來接受程序結(jié)束后返回的結(jié)果
它是作為一個(gè)結(jié)束符,終止程序運(yùn)行
注:從上面的代碼可以看出,return 0后面的代碼就不執(zhí)行了,只執(zhí)行return前面的代碼;變量x接受了test()函數(shù)結(jié)束后的返回結(jié)果
2、返回多個(gè)值
上面我們?cè)嚵朔祷匾粋€(gè)常量值,或者說一個(gè)對(duì)象值,下面我們來試試,不返回值,或者說返回多個(gè)值得情況
從上面的例子可以看出:
沒有定義,返回值數(shù)=0,返回:None
只定義了1個(gè)返回值,返回值=1 ,返回:定義的那個(gè)值,或者說定義的那個(gè)object
定義了2個(gè)以上,返回值 > 1,返回:1個(gè)元組(tuple)
提問:這邊我們不經(jīng)意的要問,為什么要有返回值?
因?yàn)槲覀兿胍胍@個(gè)函數(shù)的執(zhí)行結(jié)果,這個(gè)執(zhí)行結(jié)果會(huì)在后面的程序運(yùn)行過程中需要用到。
三、有參數(shù)函數(shù)調(diào)用
在此之前,我們演示的函數(shù)都是沒有帶參數(shù)的,下面我們就來說說帶參數(shù)的函數(shù)。在講之前,我們先來說一下,什么是形參,什么是實(shí)參吧!
形參:指的是形式參數(shù),是虛擬的,不占用內(nèi)存空間,形參單元只有被調(diào)用的時(shí)才分配內(nèi)存單元
實(shí)參:指的是實(shí)際參數(shù),是一個(gè)變量,占用內(nèi)存空間,數(shù)據(jù)傳遞單向,實(shí)參傳給形參,形參不能傳給實(shí)參
代碼如下:
1、位置參數(shù)
從上面的例子可以看出,實(shí)際參數(shù)和形式參數(shù)是一一對(duì)應(yīng)的,如果調(diào)換位置,x和y被調(diào)用的時(shí),位置也會(huì)互換,代碼如下:
那有些同學(xué)會(huì)說,那我多一個(gè)或者少一個(gè)參數(shù),總歸沒事了吧!那我看看行不行呢?
①多一個(gè)參數(shù)
def test(x,y):print(x)print(y) print("--------多一個(gè)參數(shù)----") test(1,2,3)#輸出 --------多一個(gè)參數(shù)---- Traceback (most recent call last):File "D:/PycharmProjects/pyhomework/day3/函數(shù)_帶參數(shù).py", line 8, in <module>test(1,2,3) TypeError: test() takes 2 positional arguments but 3 were given #test()函數(shù)需要傳兩個(gè)實(shí)參,你傳了三個(gè)實(shí)參②少一個(gè)參數(shù)
def test(x,y):print(x)print(y) print("--------少一個(gè)參數(shù)----") test(1)#輸出 --------少一個(gè)參數(shù)---- Traceback (most recent call last):File "D:/PycharmProjects/pyhomework/day3/函數(shù)_帶參數(shù).py", line 8, in <module>test(1) TypeError: test() missing 1 required positional argument: 'y' #沒有給y參數(shù)傳實(shí)參2、關(guān)鍵字參數(shù)
到這邊有些小伙伴不經(jīng)意的要說,像這種位置參數(shù),有點(diǎn)死,我不想這么干,萬一我傳錯(cuò)了咋辦,對(duì)吧!OK,沒有問題,下面我們就來講講關(guān)鍵字傳參。
關(guān)鍵字傳參不需要一一對(duì)應(yīng),只需要你指定你的哪個(gè)形參調(diào)用哪一個(gè)實(shí)參即可,代碼如下:
def test(x,y):print(x)print(y)print("--------互換前------") test(x=1,y=2) print("--------互換后------") test(y=2,x=1)#輸出 --------互換前------ 1 2 --------互換后------ 1 2但是,這是又有小伙伴要問了,那我可不可以位置參數(shù)和關(guān)鍵字參數(shù)結(jié)合起來用吶?接下來,我們就來探討一下。
①位置參數(shù)在前,關(guān)鍵字參數(shù)在后
def test(x,y):print(x)print(y)test(1,y=2)#輸出 1 2我擦這樣是可以的,那我試試這種情況,我把后面關(guān)鍵字不傳給y,我傳給x,代碼如下:
def test(x,y):print(x)print(y)test(1,x=2)#輸出 Traceback (most recent call last):File "D:/PycharmProjects/pyhomework/day3/函數(shù)_帶參數(shù).py", line 8, in <module>test(1,x=2) TypeError: test() got multiple values for argument 'x' #給x形參傳的值過多報(bào)錯(cuò)的意思是:給形參x傳的值過多。這種報(bào)錯(cuò)的原因是:實(shí)參1已經(jīng)傳給了形參x,后面的x=2又傳了一次,所以報(bào)錯(cuò)。
②關(guān)鍵字在前,位置參數(shù)在后
def test(x,y):print(x)print(y)test(y=2,1)#輸出 File "D:/PycharmProjects/pyhomework/day3/函數(shù)_帶參數(shù).py", line 8test(y=2,1)^ SyntaxError: positional argument follows keyword argument # 關(guān)鍵字參數(shù)在位置參數(shù)的前面我去,看來這樣不行。那我位置參數(shù)放前面,中間放關(guān)鍵字參數(shù)總行了吧!代碼如下:
def test(x,y,z):print(x)print(y)test(1,y=2,3)#輸出File "D:/PycharmProjects/pyhomework/day3/函數(shù)_帶參數(shù).py", line 8test(1,y=2,3)^ SyntaxError: positional argument follows keyword argument還是一樣的錯(cuò)誤,我去,那我只能把關(guān)鍵字參數(shù)放最后試試!
def test(x,y,z):print(x)print(y)print(z)test(1,2,z=3)#輸出 1 2 3那我最后兩個(gè)用關(guān)鍵字參數(shù)吶?
def test(x,y,z):print(x)print(y)print(z)test(1,z=2,y=3)#輸出 1 3 2總結(jié):
既有關(guān)鍵字,又有位置參數(shù)時(shí),是按位置參數(shù)的順序來
關(guān)鍵字參數(shù)是不能寫在位置參數(shù)的前面的
轉(zhuǎn)載于:https://www.cnblogs.com/luoahong/p/9889426.html
總結(jié)
以上是生活随笔為你收集整理的函数和常用模块【day04】:函数参数及调用(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ split
- 下一篇: MongoDB在Windows系统下的安