函數
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參數(含默認值) --> 可變關鍵字參數
傳參順序:
位置參數 --> 關鍵字參數
實參與形參匹配規則:
位置實參傳遞時,形參從左至右依次匹配
關鍵字實參傳遞時,形參根據關鍵字來匹配,跟順序無關
動態語言和靜態語言函數定義上的區別:
動態語言的函數的形參是沒有類型的,因此在傳遞實參時,不會報錯.
而靜態語言的函數的形參是有類型的,因此在傳遞實參時,會直接報錯.
參數解構(實參的解構)
解構對象
集合類型
可迭代對象
解構符號*和**
*將非字典類型的解構對象解構成位置參數
**將字典類型的解構對象解構成關鍵字參數
提取出來的實參個數要與形參個數能匹配,實參類型得匹配