1、函數簡介
- 函數是一個對象
- 函數是用來保存一些可執(zhí)行代碼,并且可以在需要時,對這些語句進行多次調用
語法
def 函數名([形參1,形參2,形參三.....]):
代碼塊
- 函數名必須符合標識符的規(guī)范(包含字母、下劃線、數字,但不能以數字開頭)
- print是函數對象,print()是調用函數
2、函數的參數
2.1、形參和實參
- 形參:顧名思義,形式參數。定義形參相當于在函數內部聲明了變量,但是并不是賦值
- 實參:顧名思義,實際參數。實餐指定了形參,那么在調用函數時必須傳遞實參,實參將會賦值給對應的形參,簡單來說有幾個形參就要有幾個實參。
2.2、函數的傳遞方式
- 定義形參時,可以為形參指定默認值。指定了默認值之后,如果用戶傳遞了實參,則默認值不會生效;如果沒有傳遞實參,則默認值生效
- 位置參數:將對應位置的實參賦值給對應位置的形參
- 關鍵字參數:關鍵字參數可以不按照形參定義的順序去傳遞實參,而根據參數名去傳遞實參
- 混合使用位置參數和關鍵字參數的時候必須將位置參數寫到關鍵字參數前面去
3、不定長參數
- 定義參數時,可以在形參前加一個*, 這樣這個形參可以獲取到所有的實參,它將所有的實參保存到一個元組里
- 帶*的形參只能有一個,可以和其他參數配合使用
- *形參只能接收位置參數,不能接收關鍵字參數
- **形參可以接收其他的關鍵字參數,它會將這些關鍵字參數統(tǒng)一保存到一個字典中。字典的key就是參數的名字,字典的value就是參數的值
- **形參只能有一個,并且必須寫在所有參數后面
4、參數的解包
- 傳遞實參時,也可以在序列類型的參數前添加*,這樣它會自動的將序列中的元素依次作為參數傳遞。
- 要求序列中的元素的個數必須與形參的個數一致