<button id="2ddn7"><acronym id="2ddn7"></acronym></button>

<button id="2ddn7"><acronym id="2ddn7"></acronym></button>

  • <button id="2ddn7"><object id="2ddn7"></object></button>
      1. <s id="2ddn7"></s>
        更多課程 選擇中心


        Python培訓

        400-111-8989

        Python自定義函數的參數解讀

        • 發布:Python培訓
        • 來源:Python教程知識
        • 時間:2017-09-25 16:39

        近期有朋友提問,在學習Python的自定義函數時有些費解,主要是不能透徹的理解自定義函數中的可變參數和關鍵字參數,它們的區別和應用場景是什么?那在此公眾號跟大家聊聊Python中自定義函數的那點常識。

        一、自定義函數的語法

        自定義函數,顧名思義就是根據用戶自己的需求做一個DIY,通過這個DIY就可以解決特定場景下的問題了。同時,這個被各種表達式封裝的DIY還可以重復利用,從而可以避免代碼的大量重復,我舉個例子也許就能明白了。首先,我們來看一下構造自定義函數的語法:

        # 自定義函數語法def func_name(parameters):

        expression return(res)

        def為創建自定義函數的關鍵字,即告訴Python,我要準備構造函數了;

        func_name是用戶為自己的函數起的一個名稱,最好能夠做到見名如見意;

        parameters為該函數需要使用到的形參,當然你也可以不使用參數;

        expression就是你的函數實體了,即需要這個實體做什么;

        return也是個關鍵字,目的是將最終的結果進行輸出;

        例子:

        小明今天剛上完等差數列相關的知識點,晚上老師布置了關于求解等差數列an = 3 + 5n的前5項、前10項、前50項和前100項的和。換著是現在,你完全可以通過Python寫一段循環完成累加,具體如下:

        s = 0i = 1while(i<=N):

        s += 3 + 5*i

        i += 1print(s)

        基于上面的這個循環,只需要將N換成5、10、50和100跑4次就可以得到結果。但你會發現,每次運行的時候都是這7行代碼一起運行,會顯得不是那么簡介而高大上。如果,你把這個7行代碼封裝到一個函數體內,那將是一勞永逸。具體看下方的代碼:

        # 等差數列的前N項和def sn(N): s = 0 i = 1 while(i <= N):

        s += 3 + 5*i

        i += 1 return(s)# 求和sn(5)

        sn(10)

        sn(50)

        sn(100)

        求等差數列的任意前N項和的話,我只需要調用這個自定義函數sn,然后將參數N換著不同的值即可。

        從上面的例子我們也確實感受到了函數的威力,既可以完成特定的需求,又可以將這個封裝的函數隨時進行重復調用,避免了多行代碼的重復編寫與運行。

        自定義函數的參數

        自定義函數有個parameters參數,如上面講的sn函數,其中的N就叫參數,每次運行函數的時候,只需要將一個實參傳遞給這個形參N即可。在Python中,有關自定義函數的參數一共有4種定義,他們分別是:

        必選參數

        默認參數

        可變參數

        關鍵字參數

        接下來我們對這四種參數進行舉例說明。

        1、必選參數

        必選參數,顧名思義就是當你在調用一個自定義函數時,必選給函數中的一些參數賦值,否則程序將會報錯,并提醒用戶“缺少一些必選的位置參數”。就拿上面的sn函數,如果不給該函數的參數N提供一個值,結果就是這樣的:

        def sn(N):

        s = 0

        i = 1

        while(i <= N):

        s += 3 + 5*i

        i += 1

        return(s)# 求和sn()

        2、默認參數

        我們還是以老師布置給小明的等差數列為例,小明就在想,這次老師布置的是an=3+5n的前N項和,那么下次的作業很可能就不是這個通項公式了,但有一條不變的規則就是通項公式中的3和5會變。那在自定義函數的時候,只需要再增加兩個參數分別代表3和5。

        def sn(a, d, N = 10):

        s = 0

        i = 1

        while(i <= N):

        s += a + d*i

        i += 1

        return(s)

        上面這個自定義函數一共有3個參數,其中a和d就是必須參數,因為在函數定義時并沒有給他一個初始值,而N參數就是一個默認參數,并假定初始值為10,即默認求解通項公式的前10項和。如果你需要改變前10項和的話,只需要給參數N重新賦值即可,舉例如下:

        # 求解通項公式為an=8+5n的前100項和sn(a = 8, d = 5, N = 100)

        3、可變參數

        上面講解的必選參數和默認參數,都是在已知這個自定義函數需要多少個形參的情況下構建的。那如果我不確定該給這個函數傳入多少個參數的時候,該怎樣自定義函數呢?這么說可能有點抽象,我們舉個對比的例子來說明。小明的弟弟小亮剛讀一年級,老師布置了一些關于兩個數的求和運算,針對這個問題,我們可以構建如下的自定義函數:

        def add(a,b):

        s = sum([a,b]) return(s)# 求和add(10,13)

        這個問題很簡單的利用自定義函數就可以解決了。但要求比較嚴格的爸爸對小亮的智商提出了挑戰,即不單單是兩個數之和,還可能是三個數、四個數、五個數的和...那這個時候,是不確定老爸會要求計算幾個數的和,這個add函數似乎就不能使用了。好在Python給自定義函數提供了可變參數,目的就是解決這類問題的。舉例如下:

        def adds(*args):

        s = sum(args) return(s)# 求和adds(10,13,7,8,2)

        看見了吧,這個可變參數就可以接受任意多個數值,需要注意的是,用一顆星“*”放在參數的前面,就代表了該參數為可變參數。一個可變參數之所以可以接受多個數值,起背后的原理是將這些輸入的數值進行了一次捆綁,即組裝到元組中。看下面這個打印的例子就能明白了:

        def adds(*args):

        print(args)# 打印參數值adds(10,13,7,8,2)

        4、關鍵字參數

        雖然可變參數可以接受多個實參,但其背后運行的原理是將這些實參存到到一個元組中,然后將捆綁的元素傳遞給表達式,這是一個捆綁打包的概念,但無法實現某個實參指定給某個形參。那你會問,我用必選參數就好啦,問題是當你又不確定該給自定義函數設置多少個形參,那必選參數是不是就不能使用了。所以就誕生了關鍵字參數,我們仍然舉例說明這個關鍵字參數的使用:

        如果用戶注冊某個平臺,手機號及出生日期為必填,其他信息可以選填。那可以根據用戶填寫的內容來判斷其年齡、性別等,這里的選填項就可以使用關鍵字參數了,因為你不知道用戶回填多少項信息:

        def info(tel, birthday, **args):

        import re

        user = {}

        user['tel'] = str(tel) if args.get('id') == None:

        user['birthday']=''.join(re.findall('\d+',str(birthday))) else:

        user['birthday']=str(args.get('id'))[6:14]

        user['name'] = args.setdefault('name',None)

        user['gender'] = args.setdefault('gender',0)

        user['income'] = args.setdefault('income',5000)

        user['edu'] = args.setdefault('edu','大專')

        print(user)

        這段代碼的含義是,用戶注冊時必需填寫手機號和出生日期,如果除此還填寫了身份證號,則以身份證號里面的出生日期為準;如果用戶沒有填寫姓名,則為空(None表示),否則以填寫的內容為準;如果用戶沒有填寫性別,則默認為女性(0表示),否則以填寫的為準;如果用戶沒有填寫收入狀況,則默認為5000,否則以填寫的為準;如果用戶沒有填寫學歷,則默認為大專,否則以填寫內容為準....以此類推,可以填寫其他更多的信息,而且還可以將實參與形參一一配對。

        需要注意的是,用兩顆星“*”放在參數的前面,就表示該參數為關鍵字參數。之所以能夠將形參與實參對應,是因為傳遞給函數的實參最終以字典的形式捆綁起來,而字典就是用鍵值對組成的。同樣,我們通過打印的方式來看看字典式的捆綁:

        def info(**args):

        print(args)# 打印參數值info(name = 'Sim', age = 28, gender = '男')

        OK,到此,關于Pyhton自定義函數的四種參數就介紹這些,希望對各位看官有幫助。最后需要說明一點的是,如果你的自定義函數寫的非常復雜而龐大,可能會同時使用到這四種參數,則四種參數就必須按照這樣的順序排列:必須參數、默認參數、可變參數和關鍵字參數。

        關于本文的文章內容和腳本可以從下面的,便于您的操作和保存:

        鏈接: https://pan.baidu.com/s/1gfvjfJ9 密碼: g7y6

        預約申請免費試聽課

        填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

        上一篇:python數據分析之pandas學習筆記
        下一篇:Python的編碼解碼問題

        Python中類的屬性有哪幾種

        Python語法你知道多少

        Python 中常見的配置文件寫法

        Python爬蟲可以做什么

        • 掃碼領取資料

          回復關鍵字:視頻資料

          免費領取 達內課程視頻學習資料

        • 視頻學習QQ群

          添加QQ群:1143617948

          免費領取達內課程視頻學習資料

        Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

        選擇城市和中心
        黑龍江省

        吉林省

        河北省

        湖南省

        貴州省

        云南省

        廣西省

        海南省

        青青青草网站免费观看|青青青视频在线观看 超真实强奷视频在线看 百度 好搜 搜狗
        <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>