函數是組織好的,能夠重複使用,用來實現單一或相關聯功能的代碼段app
函數即變量,變量必須先定義後使用,未定義而直接引用,至關與在引用一個不存在的變量名函數
def 關鍵詞開頭():spa
函數體code
def是固定的,不能變,他就是定義函數的關鍵詞blog
函數名,由數字,字母,下劃線任意組合,一樣不能以數字開頭,要有可描述性class
註釋:每一個函數都應該對功能和參數進行相應的說明,應該寫在函數下面的第一行,以加強代碼的可讀性。變量
調用:就是函數名加括號()循環
在函數中若是遇到return,直接結束函數,return之後的內容不會執行,做用與循環中的break差很少數據類型
在沒有返回值得狀況下,print(def 函數())返回None,引用
return 單個值 時,返回的這個元素的類型就是什麼類型
return 多個值 時,返回的值是一個元組,全部的返回值做爲元組中的一個函數
def func1(): a = 1 b = 2 c = [] d = "alex" e = {} return a,b,d #(1, 2, 'alex') <class 'tuple'> # print(func1(),type(func1()))
應用:
位置參數:按照從左到右的順序定義的參數 一一對應
位置形參:必選的參數
位置實參:按照位置給形參傳值
關鍵字參數:按照key= value的形式定義實參
無需按照位置爲形參傳值
注意的問題:關鍵字實參必須在位置實參的右面,位置參數在左,關鍵字參數在右
對同一個形參不能重複傳值,即位置參數賦值後,右面不能再以關鍵字參數賦值,否則會報錯
默認參數:形參在定義的是就已經爲其賦值
能夠傳值,也能夠不傳值,常常變化的參數能夠定義成位置參數,變化較小的能夠定義成默認參數(形參)
注意問題:1.只在定義時賦值一次
2.默認參數定義在位置形參右邊
3.默認參數一般最好定義成不可變的類型
默認參數若是定義成可變的類型。例
def my_func1(a,b=[]): b.append(a) print(b) my_func1("alex") #['alex'] my_func1("taibai") #['alex', 'taibai']
當默認參數定義成可變的類型時,這個可變的數據類型(例如list)的地址是指向的同一個。即,後面添加參數的都會出如今這個(list內)地址內部,而不是又新建一個列表。