1. 程式人生 > >python3學習筆記11(函數)

python3學習筆記11(函數)

代碼 pre orm mar height function spa 內建函數 clas

函數

python提供了許多內建函數,例如print()。

自己創建的函數,叫做用戶自定義函數。

定義一個由自己想要功能的函數,以下是簡單的規則:

  • 函數代碼塊以 def 關鍵詞開頭,後接函數標識符名稱和圓括號 ()
  • 任何傳入參數和自變量必須放在圓括號中間,圓括號之間可以用於定義參數。
  • 函數的第一行語句可以選擇性地使用文檔字符串—用於存放函數說明。
  • 函數內容以冒號起始,並且縮進。
  • return [表達式] 結束函數,選擇性地返回一個值給調用方。不帶表達式的return相當於返回 None。

格式:

def 函數名(參數列表):

  函數體

def area(width,height):      #計算面積函數
return width*height
x = area(5,4)

參數

以下是調用函數時可使用的正式參數類型:

  1. 必需參數     #必需參數須以正確的順序傳入函數。調用時的數量必須和聲明時的一樣。
  2. 關鍵字參數 #函數調用使用關鍵字參數來確定傳入的參數值,允許函數調用時參數的順序與聲明時不一致
  3. 默認參數 #調用函數時,如果沒有傳遞參數,則會使用默認參數。例如def printinfo(name,age=33),age就是默認參數
  4. 不定長參數 #可能需要一個函數能處理比當初聲明時更多的參數。

不定長參數,基本語法如下:

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)





python3學習筆記11(函數)