python3學習筆記11(函式)
阿新 • • 發佈:2019-01-07
函式
python提供了許多內建函式,例如print()。
自己建立的函式,叫做使用者自定義函式。
定義一個由自己想要功能的函式,以下是簡單的規則:
- 函式程式碼塊以 def 關鍵詞開頭,後接函式識別符號名稱和圓括號 ()。
- 任何傳入引數和自變數必須放在圓括號中間,圓括號之間可以用於定義引數。
- 函式的第一行語句可以選擇性地使用文件字串—用於存放函式說明。
- 函式內容以冒號起始,並且縮排。
- return [表示式] 結束函式,選擇性地返回一個值給呼叫方。不帶表示式的return相當於返回 None。
格式:
def 函式名(引數列表):
函式體
def area(width,height): #計算面積函式
return width*height
x = area(5,4)
引數
以下是呼叫函式時可使用的正式引數型別:
- 必需引數 #必需引數須以正確的順序傳入函式。呼叫時的數量必須和宣告時的一樣。
- 關鍵字引數 #函式呼叫使用關鍵字引數來確定傳入的引數值,允許函式呼叫時引數的順序與宣告時不一致
- 預設引數 #呼叫函式時,如果沒有傳遞引數,則會使用預設引數。例如def printinfo(name,age=33),age就是預設引數
- 不定長引數 #可能需要一個函式能處理比當初宣告時更多的引數。
不定長引數,基本語法如下:
def functionname([formal_args,] *var_args_tuple ):
"函式_文件字串"
function_suite
return [expression]
#可寫函式說明
def printinfo(arg1,*vartuple):
"列印任何傳入的引數"
print("輸出:")
print(arg1)
print(vartuple)
for var in vartuple:
print (var)
return
#呼叫printinfo函式
printinfo(10) #在函式呼叫時沒有指定引數,它就是一個空元組。我們也可以不向函式傳遞未命名的變數
printinfo(70,50,60) #加了星號 * 的引數會以元組(tuple)的形式匯入,存放所有未命名的變數
引數帶兩個星號 **基本語法如下:
def functionname([formal_args,] **var_args_dict ):
"函式_文件字串"
function_suite
return [expression]
def printinfo(arg1,**vardict):
"列印任何傳入的引數"
print("輸出: ")
print (arg1)
print(vardict)
printinfo(1,a=2,b=3) #加了兩個星號 ** 的引數會以字典的形式匯入
匿名函式
python 使用 lambda 來建立匿名函式。
所謂匿名,意即不再使用 def 語句這樣標準的形式定義一個函式。
- lambda 只是一個表示式,函式體比 def 簡單很多。
- lambda的主體是一個表示式,而不是一個程式碼塊。僅僅能在lambda表示式中封裝有限的邏輯進去。
- lambda 函式擁有自己的名稱空間,且不能訪問自己引數列表之外或全域性名稱空間裡的引數。
- 雖然lambda函式看起來只能寫一行,卻不等同於C或C++的行內函數,後者的目的是呼叫小函式時不佔用棧記憶體從而增加執行效率。
語法如下:
lambda [arg1 [,arg2,.....argn]]:expression
sum = lambda arg1,arg2: arg1+arg2
print("相加後的值是: ",sum(10,20))
return語句
return [表示式] 語句用於退出函式,選擇性地向呼叫方返回一個表示式。不帶引數值的return語句返回None。
def sum(arg1,arg2):
total = arg1 + arg2
print("函式內: ",total)
return total
total = sum(10,20)
print("函式外: ",total)