亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Python基礎(九)

系統 1751 0

今日主要內容

  • 函數初識
    • 函數定義
    • 函數調用
    • 函數返回值
    • 函數參數

一、函數初識

(一)為什么要用函數

  • 有一個需求,給出一個變量,計算變量的長度,要求不能使用 len()

                  
                    s = "郭老濕今天崩潰了,在后面直嘆氣"
    count = 0
    for i in s:
      count += 1
    print(count)
                  
                
  • 我們利用上述一段代碼完成了需求,很強666。但是問題來了,現在100個人每個人給你一個變量,讓你計算變量的長度,此時只能苦逼的敲代碼來計算!!!

                  
                    s = ......
    count = 0
    for i in s:
      count += 1
    print(count)
    
    lst = ......
    count = 0
    for i in lst:
      count += 1
    print(count)
    
    tu = ......
    count = 0
    for i in tu:
      count += 1
    print(count)
    
    ......................
                  
                
  • 我們發現一個問題,上述每一段代碼有將近99%的內容完全一樣,我們完全可以把這段代碼提前寫出來,等到使用的時候,拿過來用一下,解決了我們重復性的大問題,這就是函數的產生

                  
                    def my_len():   # 這就是把我的代碼封裝成一個函數
      count = 0
      for i in s:
          count += 1
      print(count)
    
    s = [1, 2, 3, 4, 5]
    my_len()
    
    s = "12345"
    my_len()
    
    ......................
                  
                
  • 函數可以為我們精簡代碼,把重復的內容封裝起來,需要使用的時候調用就好了,同時加強了代碼的重用性

(二)函數定義

  • 定義函數的格式:

                  
                    def 函數名():
      函數體
                  
                
    • def:定義函數的關鍵字
    • 函數名:函數名的命名規范和變量的命名規范完全相同
    • 函數體: 函數執行 的時候,真正執行的部分
  • 補充:定義變量時,開辟的內存空間、內存地址與變量名之間的關系

    • 內存空間:程序執行到定義變量內一行,先開辟一塊內存空間,用來存放數據
    • 內存地址:當內存空間開辟之后,內存地址同時就產生了,一個內存空間的地址是永遠不會改變的
    • 變量名:內存地址的外號,可以更快的找到內存空間,可有可無
                  
                    s = "zxd"
    print(id("zxd"))  # 2844747728632
    print(s)  
                  
                
  • 此時已經開辟了一塊內存空間,同時產生內存地址,之后為了方便找到"zxd",起一個外號為a,a也指向這個內存空間

                  
                    print("zxd")
    print(id("zxd"))  # 2118956123896
    # 單執行這句話時,開辟了一塊內存空間,同時產生內存地址,但是這個就沒有變量名,所以變量名可有可無,但內存地址是唯一的
                  
                

(三)函數調用

  • 函數的調用就是 使用之前預先定義好的函數

  • 函數調用方法: 函數名+()

                  
                    def play():
      print("登陸游戲")
      print("開始排位賽")
      print("開始激烈的爭逐...")
      print("Victory")
    
    play()  # 函數名+括號 就是函數調用
                  
                
  • 函數執行順序

    • 先定義,在調用,調用后執行函數體內容

    Python基礎(九)_第1張圖片

    • 在內存中的變化
      • 定義函數時在在內存中開辟一塊空間,用于存放函數體執行時產生的數據
      • 當調用函數時,執行到每一行代碼都會新開辟一塊內存空間用來存儲數據

    Python基礎(九)_第2張圖片

(四)函數返回值

  1. 為什么要有返回值?

    • 函數在執行完之后,會自動銷毀函數執行期間產生的數據,若外部程序需要用到內部函數產生的數據,此時就需要用返回值返回給外部函數
  2. 返回值關鍵字: return

  3. 返回值可以將函數執行過程中產生的數據返回,也可以返回任意數據

  4. 如果函數沒有return或者return后沒有寫值都默認返回None

  5. 返回值可以返回多個數據,以元組形式存儲

  6. 返回值是函數執行時的最后一行代碼,遇到return函數就結束了

  7. 返回值將數據返回給調用者

  8. 函數體中可以有多個返回值,但只執行一個

                  
                    def func():
     print("郭老濕沒有買到沙發")
     print("郭老濕很絕望")
     print("郭老濕要離我們而去了")
     return "郭老濕開卡車"
    
    a = func()  # 返回"郭老濕開卡車"
                  
                
  • 函數名+() 的全部作用:
    • 調用函數
    • 接收返回值

(五)函數參數

  • 看我們一段上面的代碼

                  
                    def play():
      print("登陸游戲")
      print("開始排位賽")
      print("開始激烈的爭逐...")
      print("Victory")
    
    play()
    
                  
                
  • 這是LOL大概的流程,但是我們忽略了一點,打排位得選英雄吧,那么此時我們需要填入一個參數來決定我們選擇的英雄

                  
                    def play(hero):
      print("登陸游戲")
      print("開始排位賽")
      print("選擇英雄", hero)
      print("進入召喚師峽谷")
      print("開始激烈的爭逐...")
      print("Victory")
    
    play("卡莎")
    
                  
                
  • 而hero就是我們填入的參數,在函數執行的時候,我們傳入的參數就會通過函數名傳入到我們的函數體中,這有點類似我們的格式化輸出,參數其實可以理解為一個占位符,通過函數調用時傳進去,接下來我們來看看參數的分類

  1. 形參(形式參數):函數定義時填入的參數

    • 位置參數:按照位置順序來接收實參傳來參數
                  
                    def play(game, hero, take):  # 按照位置接收實參
     print(f"登陸{game}")
     print(f"選擇角色:{hero}")
     print(f"開始游戲:{take}")
     print("結束游戲")
    
    play("LOL", "卡莎", "發育、對線、打團")
    play("DNF", "念皇", "刷深淵、打團")
    
                  
                
    • 默認值參數:在函數聲明的時候就可以給出參數的默認值,當實際調用的時候可以給出具體的值,也可以不給
                  
                    def msg(name="zxd", age=23, sex="男"):  # 默認值參數
        dic = dict()
        dic["name"] = name
        dic["age"] = age
        dic["sex"] = sex
        return dic
    
    print(msg())  # 默認值參數可以傳也可以不傳
    
                  
                
    • 混合參數:兩種參數混合使用
      • 優先級:位置參數 > 默認值參數,位置參數一定要在默認值參數前
                  
                    def msg(name, age, sex="男"):  # 混合參數
        dic = dict()
        dic["name"] = name
        dic["age"] = age
        dic["sex"] = sex
        return dic
    
    print(msg("zxd", 23))
    
                  
                
  2. 實參(實際參數):函數調用時填入的參數

    • 位置參數:按位置照順序填入實際的參數
                  
                    def play(game, hero, take):  
     print(f"登陸{game}")
     print(f"選擇角色:{hero}")
     print(f"開始游戲:{take}")
     print("結束游戲")
    
    play("LOL", "卡莎", "發育、對線、打團")
    play("DNF", "念皇", "刷深淵、打團")  # 按照位置接收實參
    
                  
                
    • 關鍵字參數:按照參數名字指定傳參,不用考慮位置順序
                  
                    def play(game, hero, take):  
     print(f"登陸{game}")
     print(f"選擇角色:{hero}")
     print(f"開始游戲:{take}")
     print("結束游戲")
    
    play(game="LOL", take="發育、對線、打團", hero="卡莎")
    play(take="刷深淵、打團", game="DNF", hero="念皇")  # 關鍵字參數
    
                  
                
    • 混合參數:兩種參數混合使用
      • 優先級:位置參數 > 關鍵字參數,位置參數必須寫在關鍵字參數之前
                  
                    def play(game, hero, take):  
     print(f"登陸{game}")
     print(f"選擇角色:{hero}")
     print(f"開始游戲:{take}")
     print("結束游戲")
    
    play("LOL", "卡莎", "發育、對線、打團")
    play("DNF", "念皇", take="刷深淵、打團")  # 混合參數
    
                  
                
  3. 傳參:傳參就是實際參數傳給形式參數的一個過程

    Python基礎(九)_第3張圖片

    • 紅色箭頭就是傳參的過程,將實參按照位置傳給形參
    • 綠色箭頭代表函數把接收到的參數分配給自己的函數體,此時和傳參沒有關系,通過相同的形參名將參數分配給函數體

更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 中文字幕第66页永久乱码 | 99r在线视频| 欧美一级欧美一级毛片 | 欧美一级在线免费观看 | 九九福利 | 91中文字幕视频 | 日韩一级欧美一级毛片在 | 日日夜夜天天久久 | 女人18毛片一级毛片在线 | 狠狠骑| 亚洲精品久久一区二区无卡 | 久草热视频 | 亚洲最大免费视频网 | 国产成年 | 国产99久久久久久免费看 | 性欧美视频在线观看 | 天天摸夜夜 | 国内精品久久久久影院中国 | 亚洲资源站资源网在线 | 中文字幕在线亚洲 | 人人爱天天做夜夜爽 | 亚洲综合视频 | 久久国产成人精品国产成人亚洲 | 七七七久久久久人综合 | 亚洲国产精品不卡毛片a在线 | 伊人婷婷色香五月综合缴缴情 | 黄色免费观看视频网站 | 97视频精品全国在线观看 | 91视频观看免费 | 四虎影视免费永久在线观看黄 | 欧美一级毛片高清免费观看 | 久久 在线播放 | 国产亚洲精品久久久久久久网站 | 秒播影视 午夜福利毛片 | 99精品久久 | 亚洲视频区 | 国产又黄又a又潮娇喘视频 国产又色又爽又黄又刺激18 | 91视频免费网站 | 天天做天天爱天天爽 | 久操网在线 | 91久久精品国产免费一区 |