Day9 函數(shù)

函數(shù)

  1. 什么是函數(shù)

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

  2. 函數(shù)的分類(lèi)

    系統(tǒng)函數(shù):系統(tǒng)已經(jīng)封裝好秀又,直接調(diào)用使用

    自定義函數(shù):需要自己去定義

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

    • 語(yǔ)法:

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

      ? 函數(shù)體

    • 說(shuō)明:

      def - python中聲明函數(shù)的關(guān)鍵字
      函數(shù)名 - 標(biāo)識(shí)符涤妒,不能是關(guān)鍵字
      ? PEP8命名規(guī)范,見(jiàn)名知意
      () - 固定格式
      參數(shù)列表 - 參數(shù)1账劲,參數(shù)2,參數(shù)3...;這兒的參數(shù)叫形參
      ? 定義的時(shí)候形參就是變量
      ? 功能是將函數(shù)外面的數(shù)據(jù)傳遞到函數(shù)里
      : - 固定格式
      函數(shù)體 - 一個(gè)完整的函數(shù)體包含:函數(shù)說(shuō)明文檔,實(shí)現(xiàn)功能的代碼段

    • 初學(xué)者聲明函數(shù)的步驟(老司機(jī)繞行)
      第一步:確定函數(shù)功能
      第二步:根據(jù)函數(shù)功能確定函數(shù)名
      第三步:確定形參(是否需要參數(shù),確定需要幾個(gè)參數(shù))
      看實(shí)現(xiàn)函數(shù)的功能需不需要從外邊傳值,以及需要傳幾個(gè)
      第四步:實(shí)現(xiàn)函數(shù)功能
      第五步:確定函數(shù)返回值

      注意:聲明函數(shù)的時(shí)候不會(huì)執(zhí)行函數(shù)體雹熬!只有在調(diào)用的時(shí)候才會(huì)中

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

    • 語(yǔ)法

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

    • 說(shuō)明
      函數(shù)名 - 這個(gè)函數(shù)名對(duì)應(yīng)的函數(shù)必須是已經(jīng)聲明過(guò)的函數(shù)
      () - 固定寫(xiě)法
      實(shí)參列表 - 實(shí)參是用來(lái)給形參賦值的 - 傳參
      ? 實(shí)參和形參必須一一對(duì)應(yīng)

    • 調(diào)用過(guò)程(重點(diǎn))
      第一步:回到函數(shù)聲明的位置
      第二步:實(shí)參賦值給形參(傳參)
      第三步:執(zhí)行函數(shù)體
      第四步:確定并返回返回值
      第五步:回到函數(shù)調(diào)用的位置,接著執(zhí)行后面的代碼

      # 練習(xí) 聲明一個(gè)函數(shù)谣膳,獲取并打印一個(gè)列表中指定元素對(duì)應(yīng)的下標(biāo)
      list1 = [1, 2, 3, 4, 5, 6, 1, 2, 3, 4]
      
      
      def inquire_index(list1: list, num1):
          for index in range(len(list1)):
              if list1[index] == num1:
                  print(index)
      
      
      inquire_index(list1, 2)
      # 打印N的階乘
      
      
      def factorial_n(num):
          rpp = 1
          for i in range(1,num+1):
              rpp *= i
          print(rpp)
      
      
      factorial_n(10)
      

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

  1. 位置參數(shù)和關(guān)鍵字參數(shù)(根據(jù)實(shí)參的傳遞方式對(duì)參數(shù)進(jìn)行的分類(lèi))
    • 位置參數(shù):實(shí)參的位置和形參的位置保持一致竿报,按形參聲明的先后順序一一賦值
    • 關(guān)鍵字參數(shù):調(diào)用函數(shù)的時(shí)候以 形參 = 實(shí)參的方式來(lái)傳參,這時(shí)候?qū)崊⒌捻樞驘o(wú)所謂
def func1(a, b, c):
    print(a, b, c)


# 通過(guò)位置參數(shù)給形參賦值
func1(10,20,30)
# 通過(guò)關(guān)鍵字參數(shù)傳參
func1(c=30, a=10, b=20)
# 通過(guò)位置參數(shù)和關(guān)鍵字參數(shù)結(jié)合傳參(注意:位置參數(shù)在前面继谚,關(guān)鍵字參數(shù)在后面)
func1(10, 20, c=30) 
  1. 參數(shù)默認(rèn)值
    聲明函數(shù)的時(shí)候烈菌,可以給參數(shù)賦默認(rèn)值。如果一個(gè)形參有默認(rèn)值,那么調(diào)用函數(shù)的時(shí)候芽世,這個(gè)參數(shù)就可以不用傳參了
    如果有的形參有默認(rèn)值挚赊,有的形參沒(méi)有默認(rèn)值,那么有默認(rèn)值的形參要放在沒(méi)有默認(rèn)值形參的后面济瓢。調(diào)用參數(shù)要保證每個(gè)參數(shù)都有值

    # 參數(shù)c有默認(rèn)值是荠割,調(diào)用函數(shù)可以不用傳參
    
    
    def func3(width=5, color='black', long=10):
        print('畫(huà)一條長(zhǎng)度是%d寬度是%d的%s線' % (long, width, color))
    
    
    func3()
    func3(color='red')
    
  2. 參數(shù)的類(lèi)型說(shuō)明 -- 類(lèi)型說(shuō)明只有提示的功能沒(méi)有約束功能

    • 給參數(shù)設(shè)置默認(rèn)值,默認(rèn)值的類(lèi)型就是參數(shù)的類(lèi)型

    • 形參:類(lèi)型名 在形參后面加:類(lèi)型名(list,dict,tuple,set)旺矾。這種方式必須傳參

    • 函數(shù)聲明的()后面加 -> 類(lèi)型名,來(lái)說(shuō)明返回值的類(lèi)型

    • 類(lèi)型說(shuō)明的好處: a.對(duì)實(shí)參的類(lèi)型進(jìn)行說(shuō)明指導(dǎo)
      ? b.實(shí)現(xiàn)函數(shù)功能的時(shí)候有類(lèi)型相關(guān)的語(yǔ)法提示

      def list_item(list1, index=0) -> int:
          print(list1[index])
          return 10
      
      
      list_item([1,2,3])
      
      
      def func4(a: list, b: dict):
          a.append()
      
  3. 不定長(zhǎng)參數(shù) -- 函數(shù)參數(shù)個(gè)數(shù)不確定

    • 聲明函數(shù)的時(shí)候在形參名前加蔑鹦,可以用來(lái)同時(shí)獲取多個(gè)實(shí)參的值 -- 實(shí)質(zhì)是將帶的參數(shù)變成元組,將多個(gè)實(shí)參的值作為元組的元素

      注意:a.如果函數(shù)中既有不定長(zhǎng)參數(shù)箕宙,又有普通參數(shù)嚎朽,那么不定長(zhǎng)參數(shù)必須放在普通參數(shù)的后面
      ? b.兩個(gè)的參數(shù)要放在一個(gè)的后面

      # 計(jì)算多個(gè)數(shù)的和
      def num_sum(*nums):
          print(nums)
      
      def func5(name, *scores):
          print(name, scores)
      
      func5('郭銳', 90,20,53)
      
      num_sum(10, 20, 30)
      num_sum(20, 30, 40, 50)
      
    • 在形參前加兩個(gè)* -- 必須用關(guān)鍵字參數(shù),對(duì)應(yīng)的關(guān)鍵字作為key柬帕,而值作為value哟忍,從而形成一個(gè)字典

      def func6(**nums):
          print(nums)
      
      func6(a=10, b=20)
      func6()
      
      # 寫(xiě)一個(gè)函數(shù),計(jì)算多個(gè)數(shù)的和(要求可以使用位置參數(shù)陷寝,也可以使用關(guān)鍵字參數(shù))
      def all_num_sum(*args, **kwargs):
          sum1 = 0
          for item in args:
              sum1 += item
          for key in kwargs:
              sum1 += kwargs[key]
          print('和為%d' % sum1)
      
      
      all_num_sum(10, 20, a=30, b=40)
      

函數(shù)中的返回值

  1. 什么是返回值 - 返回值就是將函數(shù)里面的數(shù)據(jù)傳遞到函數(shù)外面

    • 就是函數(shù)調(diào)用表達(dá)式的值锅很,就是return 關(guān)鍵字后面的表達(dá)式的值

    • python中每個(gè)函數(shù)都有返回值,默認(rèn)為None
      ? 函數(shù)調(diào)用表達(dá)式 - 調(diào)用函數(shù)的語(yǔ)句
      return - 關(guān)鍵字凤跑,只能寫(xiě)在函數(shù)體中爆安。 功能:1:確定函數(shù)的返回值 2.結(jié)束函數(shù)
      ? 執(zhí)行函數(shù)的時(shí)候,如果遇到return饶火,函數(shù)直接結(jié)束鹏控,并且將return后面的值作為返回值
      回到函數(shù)調(diào)用的位置(這個(gè)時(shí)候函數(shù)對(duì)奧用的表達(dá)式的值就是函數(shù)的返回值)

      函數(shù)調(diào)用過(guò)程
      回到函數(shù)聲明位置
      傳參 - (保證每個(gè)參數(shù)都有值)
      執(zhí)行函數(shù)體
      執(zhí)行完函數(shù)確定返回值 -- 如果執(zhí)行過(guò)程中沒(méi)有遇到return致扯,函數(shù)的返回值為None
      ? 遇到return肤寝,return后面是什么,返回值就是什么

    def func1():
        print('*******')
        return 0
        print('=======')
    
    
    result = func1()        #func1()就是函數(shù)調(diào)用表達(dá)式
    print(result)
    
    
    def func2():
        print(100)
    
    
    print(func2())          # 先打印100抖僵,然后打印None 鲤看,先執(zhí)行函數(shù),再打印返回值
    
  2. 多個(gè)返回值
    return 值1耍群,值2义桂,值3 <==> (值1,值2蹈垢,值3.···)

    def func3():
        return 1,2,3
    
    
    x,y,z = func3()
    print(x,y,z)
    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末慷吊,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子曹抬,更是在濱河造成了極大的恐慌溉瓶,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,029評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異堰酿,居然都是意外死亡疾宏,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)触创,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)坎藐,“玉大人,你說(shuō)我怎么就攤上這事哼绑⊙意桑” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,570評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵凌那,是天一觀的道長(zhǎng)兼雄。 經(jīng)常有香客問(wèn)我,道長(zhǎng)帽蝶,這世上最難降的妖魔是什么赦肋? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,535評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮励稳,結(jié)果婚禮上佃乘,老公的妹妹穿的比我還像新娘。我一直安慰自己驹尼,他們只是感情好趣避,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,650評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著新翎,像睡著了一般程帕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上地啰,一...
    開(kāi)封第一講書(shū)人閱讀 49,850評(píng)論 1 290
  • 那天愁拭,我揣著相機(jī)與錄音,去河邊找鬼亏吝。 笑死岭埠,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蔚鸥。 我是一名探鬼主播惜论,決...
    沈念sama閱讀 39,006評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼止喷!你這毒婦竟也來(lái)了馆类?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,747評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤弹谁,失蹤者是張志新(化名)和其女友劉穎乾巧,沒(méi)想到半個(gè)月后技羔,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,207評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡卧抗,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,536評(píng)論 2 327
  • 正文 我和宋清朗相戀三年藤滥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片社裆。...
    茶點(diǎn)故事閱讀 38,683評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡拙绊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出泳秀,到底是詐尸還是另有隱情标沪,我是刑警寧澤,帶...
    沈念sama閱讀 34,342評(píng)論 4 330
  • 正文 年R本政府宣布嗜傅,位于F島的核電站金句,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏吕嘀。R本人自食惡果不足惜违寞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,964評(píng)論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望偶房。 院中可真熱鬧趁曼,春花似錦、人聲如沸棕洋。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,772評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)掰盘。三九已至摄悯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間愧捕,已是汗流浹背奢驯。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,004評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留晃财,地道東北人叨橱。 一個(gè)月前我還...
    沈念sama閱讀 46,401評(píng)論 2 360
  • 正文 我出身青樓典蜕,卻偏偏與公主長(zhǎng)得像断盛,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子愉舔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,566評(píng)論 2 349

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

  • 一钢猛、快捷鍵 ctr+b 執(zhí)行ctr+/ 單行注釋ctr+c ...
    o_8319閱讀 5,793評(píng)論 2 16
  • 一、函數(shù)轩缤、字典命迈、列表集合的區(qū)別 列表贩绕,字典,元祖壶愤,集合"""列表(list): []淑倾;可變,有序征椒;元素是任何類(lèi)型的...
    大漠判官1閱讀 206評(píng)論 0 0
  • 一娇哆、變量的作用域 1、變量的作用域 變量在程序中能夠使用的范圍 2勃救、全局變量 a.聲明在函數(shù)或者類(lèi)的外部的變量都是...
    w的狗子啊閱讀 398評(píng)論 0 0
  • 寫(xiě)在前面的話 代碼中的# > 表示的是輸出結(jié)果 輸入 使用input()函數(shù) 用法 注意input函數(shù)輸出的均是字...
    FlyingLittlePG閱讀 2,743評(píng)論 0 8
  • 2018年6月6日 星期三 媽媽?zhuān)瑸槭裁赐瑢W(xué)都在玩抖音碍讨,我卻不可以,這樣很沒(méi)面子蒙秒! 孩子: 真正的自由勃黍, 不是身...
    晴致生活館閱讀 248評(píng)論 0 0