1. 程式人生 > >python函數之參數、參數解構

python函數之參數、參數解構

函數

函數
    python函數組成:
        定義語句,函數名,參數列表,代碼塊

    函數作用:
        將一段功能代碼封裝起來,便於復用.
        代碼更加簡潔.

    函數的分類:
        內建函數: 如,max()等
        庫函數: 如,math.ceil()等

    函數的定義:
        def語句定義函數(定義後的函數才能使用)
        def functionNAME([args_list]):
            代碼塊
            [return value]

        函數名的規範和標識符規範相同.
        縮進約定為4個空格
        return語句可省略,但其默認返回值是None

        例:
            def fn(x):
                return x

    函數的調用:
        通過函數名來調用此函數,functionNAME([args_list])
        函數時可調用的對象,callable()函數檢查此對象是否可調用

        例:
            fn(1)
參數


    形參: 函數定義時所使用的參數
    實參: 函數調用時所使用的參數
    傳參: 實參根據形參的匹配規則,逐一傳遞給形參
    參數默認值: 定義時,在形參後跟上一個值(可變參數無默認值)
        作用:
            當實參未給足時,對沒有給定的參數賦值為默認值 
            參數過多,簡化函數調用


    形參有:
        位置參數、可變位置參數、可變關鍵字參數、keyword-only參數
    實參有:
        位置參數、關鍵字參數


    形參:
        位置參數,可接受一個實參,根據實參傳遞的順序從左至右依次匹配
            表示方式: 參數名,例: def fn(x)

        可變位置參數,可接受任意個位置實參(包括0個),在位置參數被取完後,其余都被其接收
            表示方式: ‘*‘號後跟參數名,例: def fn(*args)
            將一組位置參數形成一個tuple


        可變關鍵字參數,可接受任意個關鍵字實參(包括0個),在關鍵字參數被取完後,其余都被其接收
            表示方式: ‘**‘號後跟參數名,例: def fn(**kwargs)
            將一組關鍵字參數形成一個字典

        keyword-only參數,在可變位置參數之後的普通參數,可接受一個實參,按左右順序與實參匹配
            表示方式: 
                1.‘*‘, 後跟普通參數
                    例: def fn(*,x,y) , x和y是keyword-only參數
                2.可變位置參數後跟普通參數
                    例: def fn(*args,x,y) , x和y是keyword-only參數


    實參:
        位置參數: 可以是集合對象,可叠代對象,可看做一個整體的單個對象.例: (1,2),{1,2},[1,2],list(range(1,3)),1
        關鍵字參數: name = value 格式的參數.例: ‘a‘ = 1


    形參定義順序規則:
        位置參數 --> 位置參數(含默認值) --> 可變位置參數 --> keyword-only參數 --> keyword-only參數(含默認值) --> 可變關鍵字參數
    傳參順序:
        位置參數 --> 關鍵字參數
    實參與形參匹配規則:
        位置實參傳遞時,形參從左至右依次匹配
        關鍵字實參傳遞時,形參根據關鍵字來匹配,跟順序無關


    動態語言和靜態語言函數定義上的區別:
        動態語言的函數的形參是沒有類型的,因此在傳遞實參時,不會報錯.
        而靜態語言的函數的形參是有類型的,因此在傳遞實參時,會直接報錯.


參數解構(實參的解構)
    解構對象
        集合類型
        可叠代對象
    解構符號*和**
    *將非字典類型的解構對象解構成位置參數
    **將字典類型的解構對象解構成關鍵字參數
    提取出來的實參個數要與形參個數能匹配,實參類型得匹配


本文出自 “12064120” 博客,請務必保留此出處http://12074120.blog.51cto.com/12064120/1973029

python函數之參數、參數解構