day10總結-函數(shù)

函數(shù)

1.什么是函數(shù)

函數(shù)就是對實現(xiàn)某一特定功能的代碼段的封裝

2.函數(shù)的分類

內(nèi)置函數(shù)(系統(tǒng)函數(shù)) :Python已經(jīng)實現(xiàn)的函數(shù),程序員可直接使用冯挎,如print(),input(),max(),len()等。相當于系統(tǒng)造好的機器

自定義函數(shù) :程序員自己定義的函數(shù)沙郭,相當于自己造機器渐行。

3.函數(shù)的定義(聲明)

語法:

def 函數(shù)名(參數(shù)列表):

? 函數(shù)體

說明:

def :聲明函數(shù)關鍵字,固定寫法

函數(shù)名:要求--標識符冀宴,不能是關鍵字

? 規(guī)范--見名知義,所有字母都小寫温学,各個單詞之間用下劃線分開略贮,不能和系統(tǒng)函數(shù)名或類名重名

():固定寫法,不能省略

參數(shù)列表:形參1,形參2逃延,...览妖,形參n;形參可以沒有揽祥,也可以有多個讽膏。形參的功能是將函數(shù)外面的數(shù)據(jù)傳到函數(shù)內(nèi)部

:--固定寫法

函數(shù)體:和def保持一個縮進的代碼段;函數(shù)體分為函數(shù)說明文檔和實現(xiàn)函數(shù)功能的代碼段兩個部分

注意 :函數(shù)體在函數(shù)聲明時不會執(zhí)行拄丰,調(diào)用函數(shù)時才會執(zhí)行府树。

初學者聲明函數(shù)的步驟

第一步:確定函數(shù)的功能

第二部:根據(jù)功能確定函數(shù)的名字

第三步:確定參數(shù)(是否需要參數(shù),需要幾個參數(shù))

? 看實現(xiàn)函數(shù)的功能需不需要從函數(shù)外面給函數(shù)傳值料按,如果需要奄侠,需要幾個

第四部:實現(xiàn)函數(shù)的功能

第五步:確定返回值

def zy_sum(num1,num2):
    """
    函數(shù)說明文檔
    """
    print(num1 + num2)

    
def zy_mul(n):
    """
    求1*2*3*...*n
    """
    mul = 1
    for num in range(1,n + 1):
        mul *= num
        print(mul)

4.函數(shù)的調(diào)用

相當于使用機器

語法:

函數(shù)名(參數(shù)列表)

說明:

函數(shù)名:函數(shù)名對應的函數(shù)必須是之前已經(jīng)聲明過的函數(shù)。

():固定寫法

參數(shù)列表:即實參载矿,用來給形參賦值垄潮,和形參一一對應。

函數(shù)的調(diào)用過程

函數(shù)在聲明時不會執(zhí)行函數(shù)體闷盔,調(diào)用時才會執(zhí)行弯洗。

  1. 先回到函數(shù)聲明的位置
  2. 用實參給形參賦值(傳參)--傳參要保證每個形參都有值
  3. 執(zhí)行函數(shù)體
  4. 執(zhí)行完函數(shù)體后再回到函數(shù)調(diào)用的位置,接著往后執(zhí)行

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

根據(jù)實參的寫法馁筐,將參數(shù)分為位置參數(shù)和關鍵字參數(shù)

  • 位置參數(shù):調(diào)用函數(shù)傳參時涂召,實參的位置和形參一一對應,保證每個形參都有值敏沉。
  • 關鍵字參數(shù):以“形參名=值”的方式來調(diào)用函數(shù)果正,在這兒形參的順序可以和聲明的時候形參的順序不同。
  • 混合使用:位置參數(shù)可以和關鍵字參數(shù)混合使用盟迟,但混合使用時秋泳,位置參數(shù)必須在關鍵字參數(shù)前面,否則報錯
def func1(a,b,c):
    print(a,b,c)
    
func1(10,20,30)   #位置參數(shù)
func1(c=10,b=20,a=9)  #關鍵字參數(shù)攒菠,等號前面變量必須和聲明時的形參一致
func1(10,c=9,b=1)   #混合使用迫皱,10的值賦給a,后面不可再用關鍵字參數(shù)賦給a值了

參數(shù)默認值

聲明函數(shù)時辖众,函數(shù)的形參可以設置默認值卓起。

  • 設置默認值時,可以一部分有默認值凹炸,一部分沒有默認值戏阅,但沒有默認值的一定要在有默認值的前面,否則報錯啤它。
  • 有默認值得參數(shù)奕筐,調(diào)用時可以不用傳參舱痘,沒有默認值的時候調(diào)用時必須傳參
  • 當我們傳參想跳過某個或某幾個有默認值的參數(shù),直接給后面的參數(shù)傳參時离赫,后面的參數(shù)必須使用關鍵字傳參
def func2(a,b=2,c=3):
    print(a,b,c)

func2(10,20,30)   #10 20 30
func(10,20)   #10 20 3
func2(10)  # 10 2 3
func(10,c=20) #10 2 20,要跳過b賦值芭逝,這里就必須要用關鍵字參數(shù)

參數(shù)類型說明

  • 給參數(shù)設置默認值,默認是什么類型渊胸,參數(shù)就是什么類型
  • 以‘參數(shù)名:類型名’的方式說明參數(shù)類型
def func3(nums:list,a:int,b=0):

不定長參數(shù)

  1. 聲明函數(shù)時旬盯,在形參前面加一個*,可以將這個形參變?yōu)樵骖愋汪崦停梢酝瑫r接收多個位置參數(shù)的值
  • 一個函數(shù)中可以同時有定長參數(shù)和不定長參數(shù)瓢捉,一般情況下,定長參數(shù)要在不定長參數(shù)前面
  • 如果出現(xiàn)定長參數(shù)在不定長參數(shù)后面(比如办成,賦默認值),那么調(diào)用時搂漠,定長參數(shù)使用關鍵字參數(shù)傳參
def func2(*num): #傳參個數(shù)0-n
    print()
def func2(a,b,*num):   #傳參個數(shù)2-n
    print()
def func2(a,*num,b=1):
    print(a,num,b)
func2(1,2,3,4,5)       #1 (2, 3, 4, 5) 1
func2(1,2,3,4,5,b=99)   #1 (2, 3, 4, 5) 99  
  1. 聲明函數(shù)時迂卢,在形參前面加**,可以將這個形參變?yōu)樽值漕愋屯┨溃梢酝瑫r接收多個關鍵字參數(shù)的值(這里關鍵字自己隨便命名而克,不要寫成字符串!怔毛!若前面還有定長參數(shù)员萍,關鍵字就不能是定產(chǎn)參數(shù)的名字)
def func3(a,**num):
    print(a,num)
func3(10,d=1,b='2',c='c')

注意:

原則上一個函數(shù)的參數(shù)即可以有定長,也可以最多有一個帶一個*的不定長參數(shù)和最多一個的帶兩個*的不定長參數(shù)拣度。如果同時有帶一個*的和帶兩個*的碎绎,帶一個*的要放在前面。

各參數(shù)聲明順序:

def func5(a,*num,b=0,**key)

def func5(a,*num,b=0,**key):
    print(a,b,num,key)

func5(1,2,3,b=11,d=1,c=2)    #1 11 (2, 3) {'d': 1, 'c': 2}
func5(1,2,3,d=1,c=2)        #1 0 (2, 3) {'d': 1, 'c': 2}

def func5(a,b=0,*num,**key):
    print(a,b,num,key)      #這里若要使num有值抗果,那么b不能關鍵字傳參筋帖,因為位置參數(shù)要在關鍵字之前,所以推薦上面的寫法
    
func5(10,20,30,40,n=1,m=2)  #10 20 (30,40) {'n':1,'m':2},先傳給a冤馏,b日麸,剩下的給num,這里n逮光,m關鍵字不能是a代箭,b,也不能是字符串
func5(10,b=2,n=1,m=2)    #10 2 () {'n': 1, 'm': 2}
func5(10,b=2,3,4,n=1,m=2)    #報錯

5.函數(shù)返回值

1.什么是返回值

返回值的作用是將函數(shù)體中產(chǎn)生的數(shù)據(jù)傳遞到函數(shù)外面涕刚。

返回值就是函數(shù)調(diào)用表達式(就是調(diào)用函數(shù)的語句嗡综,它的結果就是這個函數(shù)的返回值)的值,就是return關鍵字后面的值副女。

2.return關鍵字

return只能出現(xiàn)在函數(shù)體內(nèi)蛤高,當執(zhí)行函數(shù)體的時候遇到return蚣旱,函數(shù)直接結束,并且會將return后面的值作為函數(shù)的返回值返回戴陡。

如果在執(zhí)行函數(shù)體的時候沒有遇到return塞绿,或return后沒有指定值,則函數(shù)的返回值是None(表示空恤批,class 'NoneType')

3.函數(shù)的調(diào)用過程(完整版)

  1. 先回到函數(shù)聲明的位置
  2. 用實參給形參賦值(傳參)
  3. 執(zhí)行函數(shù)體
  4. 執(zhí)行完函數(shù)體后异吻,確定返回值(執(zhí)行完函數(shù)體中所有語句沒有遇到return,函數(shù)的返回值是None喜庞,執(zhí)行過程中遇到return诀浪,函數(shù)的返回值就是return后面的值,若沒有值延都,則返回值為None
  5. 回到函數(shù)調(diào)用的位置雷猪,接著往后執(zhí)行(此時函數(shù)調(diào)用表達式的值才是函數(shù)的返回值)

4.什么時候函數(shù)需要有返回值

給初學者的建議:只要實現(xiàn)函數(shù)的功能產(chǎn)生了新的數(shù)據(jù),就可以把數(shù)據(jù)用返回值返回

Python中晰房,函數(shù)返回值可以有多個值求摇,實質是元祖(return后多個值,用逗號隔開)

def func1():
    return 10,20

x,y = func1()
print(x,y)    #10 20
x = func1()
print(x)    #(10,20)

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末殊者,一起剝皮案震驚了整個濱河市与境,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌猖吴,老刑警劉巖摔刁,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異海蔽,居然都是意外死亡共屈,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門党窜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來忠售,“玉大人杆逗,你說我怎么就攤上這事。” “怎么了漾橙?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵科平,是天一觀的道長校镐。 經(jīng)常有香客問我衣厘,道長,這世上最難降的妖魔是什么择镇? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任挡逼,我火速辦了婚禮,結果婚禮上腻豌,老公的妹妹穿的比我還像新娘家坎。我一直安慰自己嘱能,他們只是感情好,可當我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布虱疏。 她就那樣靜靜地躺著惹骂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪做瞪。 梳的紋絲不亂的頭發(fā)上对粪,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天,我揣著相機與錄音装蓬,去河邊找鬼著拭。 笑死,一個胖子當著我的面吹牛牍帚,可吹牛的內(nèi)容都是我干的儡遮。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼暗赶,長吁一口氣:“原來是場噩夢啊……” “哼峦萎!你這毒婦竟也來了?” 一聲冷哼從身側響起忆首,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎被环,沒想到半個月后糙及,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡筛欢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年浸锨,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片版姑。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡柱搜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出剥险,到底是詐尸還是另有隱情聪蘸,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布表制,位于F島的核電站健爬,受9級特大地震影響,放射性物質發(fā)生泄漏么介。R本人自食惡果不足惜娜遵,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望壤短。 院中可真熱鬧设拟,春花似錦慨仿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至躲雅,卻和暖如春鼎姊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背相赁。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工相寇, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人钮科。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓唤衫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親绵脯。 傳聞我的和親對象是個殘疾皇子佳励,可洞房花燭夜當晚...
    茶點故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容

  • 函數(shù)和對象 1、函數(shù) 1.1 函數(shù)概述 函數(shù)對于任何一門語言來說都是核心的概念蛆挫。通過函數(shù)可以封裝任意多條語句赃承,而且...
    道無虛閱讀 4,550評論 0 5
  • 這是16年5月份編輯的一份比較雜亂適合自己觀看的學習記錄文檔,今天18年5月份再次想寫文章悴侵,發(fā)現(xiàn)簡書還為我保存起的...
    Jenaral閱讀 2,739評論 2 9
  • 函數(shù)只定義一次瞧剖,但可能被執(zhí)行或調(diào)用任意次。JS函數(shù)是參數(shù)化的可免,函數(shù)的定義會包括一個稱為形參的標識符列表抓于,這些參數(shù)在...
    PySong閱讀 311評論 0 0
  • 函數(shù)只定義一次,但可能被執(zhí)行或調(diào)用任意次浇借。JS函數(shù)是參數(shù)化的捉撮,函數(shù)的定義會包括一個稱為形參的標識符列表,這些參數(shù)在...
    PySong閱讀 847評論 0 0
  • 函數(shù)只定義一次妇垢,但可能被執(zhí)行或調(diào)用任意次巾遭。JS函數(shù)是參數(shù)化的,函數(shù)的定義會包括一個稱為形參的標識符列表闯估,這些參數(shù)在...
    PySong閱讀 519評論 0 0