python函數之參數、參數解構
阿新 • • 發佈:2017-10-17
函數
函數
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函數之參數、參數解構