python官方文檔:https://docs.python.org/zh-cn/3.8/
在Python中,定義一個函數要使用
def
語句,依次寫出函數名、括號、括號中的參數和冒號:
,然後,在縮進塊中編寫函數體,函數的返回值用return
語句返回。
pass
可以用來作爲佔位符;
isinstance()
:數據類型檢查if not isinstance(x, (int, float)):檢驗傳入的x是否爲int或float型
函數可以返回多個值;
默認參數:在函數參數中寫入參數並賦值,如果賦值的參數在之後的調用中不需要更改,則調用時不需要再顯示地寫出來,只有不同時才需要重新賦值 ,大大降低了函數調用的難度,默認參數必須指向不變對象!:
def enroll(name, gender, age=6, city='Beijing') #age和city被賦予默認參數 >>> enroll('Sarah', 'F') #調用函數給非默認參數賦值,默認參數如果不需要改變則無需書寫並直接輸出 name: Sarah gender: F age: 6 city: Beijing enroll('Adam', 'M', city='Tianjin') #city需要變化,重新賦值
可變參數:傳入的參數個數是可變的 ;在參數前面加了一個
*
號;允許你傳入0個或任意個參數;可變參數在函數調用時自動組裝爲一個tuple>>> nums = [1, 2, 3] >>> calc(*nums) 14
關鍵字參數:允許你傳入0個或任意個含參數名的參數,這些關鍵字參數在函數內部自動組裝爲一個dict。 函數的調用者可以傳入任意不受限制的關鍵字參數。至於到底傳入了哪些,就需要在函數內部通過
kw
檢查def person(name, age, **kw): if 'city' in kw: # 有city參數 pass if 'job' in kw: # 有job參數 pass print('name:', name, 'age:', age, 'other:', kw)
命名關鍵字參數:限制關鍵字參數的名字;和關鍵字參數
**kw
不同,命名關鍵字參數需要一個特殊分隔符*
,*
後面的參數被視爲命名關鍵字參數。def person(name, age, *, city, job): print(name, age, city, job)
如果函數定義中已經有了一個可變參數,後面跟着的命名關鍵字參數就不再需要一個特殊分隔符
*
了
在Python中定義函數,可以用必選參數、默認參數、可變參數、關鍵字參數和命名關鍵字參數,這5種參數都可以組合使用。但是請注意,參數定義的順序必須是:必選參數、默認參數、可變參數、命名關鍵字參數和關鍵字參數。
遞歸中解決棧溢出的方法:尾遞歸法,在函數返回的時候,調用自身本身,並且,return語句不能包含表達式。