python學習總結之 函式定義def

ckxllf發表於2020-04-09

  python中支援自定義函式

  以def開頭,後接識別符號名稱及圓括號(),圓括號內部包含引數

  圓括號後以冒號起始,下一行縮排

  以return[表示式]結束

  # 自定義函式

  def printme(str):

  print(str)

  return

  # 呼叫函式1

  printme("我呼叫我自己")

  printme作為自定義函式,str為引數,自定義函式內部的print(str)執行將引數列印的操作,最後以return結尾。

  def中的引數分不可變型別與可變型別

  strings\tuples\numbers是不可變型別

  list\dict等是可變型別

  # 不可變型別

  def ChangeInt(a):

  a = 10

  b = 2

  ChangeInt(b)

  print(b) # 結果是 2

  可以看到b作為一個numbers,在b傳入引數傳入後不發生改變。

  # 可變型別1

  def changec(c):

  c[2] = 1

  return

  cc = [3, 3, 3]

  changec(cc)

  print(cc)

  可以看到cc作為一個list,在傳入c後發生了改變,結果為3,3,1。這裡做了一個實驗當內部函式c[2]=1改為c=[1, 1, 1]時,函式不發生改變,小夥伴們感興趣可以解釋下為什麼。

  # 可變型別2

  def changeme(mylist):

  "修改傳入的列表"

  mylist.append([1, 2, 3, 4])

  mylist[2] = 55

  print("函式內取值: ", mylist)

  return

  # 呼叫changeme函式

  mylist = [10, 20, 30]

  changeme(mylist)

  print("函式外取值: ", mylist)

  這裡append的作用是在矩陣的右邊增加[1, 2, 3, 4]矩陣,這裡也是同樣道理,最終輸出結果為

  函式內取值: [10, 20, 55, [1, 2, 3, 4]]

  函式外取值: [10, 20, 55, [1, 2, 3, 4]]

  def中的引數可自動匹配

  # 引數名匹配引數值

  def printme(str):

  "列印任何傳入的字串"

  print(str)

  return

  # 呼叫printme函式

  printme(str="My string")

  這裡是引數名匹配引數值的原則,設定引數為str後,可列印str=“XXX”,python會自動識別。

  # 引數順序不重要 鄭州做人流哪家醫院好

  def printinfo(name, age):

  "列印任何傳入的字串"

  print("Name: ", name)

  print("Age ", age)

  return

  # 呼叫printinfo函式

  printinfo(age=25, name="wly")

  引數的順序對於傳遞不重要,這裡顛倒順序後python自動糾正。

  def中的引數可賦初值

  # 預設引數在有初始值幅值的情況下可預設

  def printinfo1(name, age=25):

  "列印任何傳入的字串"

  print("Name: ", name)

  print("Age ", age)

  return

  # 呼叫printinfo函式

  printinfo1(name="wqr")

  當有初始值賦值時,可預設引數,若均有初始值賦值,可傳遞空。

  def中的不定長引數

  # 不定長引數

  def printinfo(arg1, *vartuple):

  "列印任何傳入的引數"

  print("輸出: ")

  print(arg1)

  for var in vartuple:

  print(var)

  return

  # 呼叫printinfo 函式

  printinfo(10)

  printinfo(70, 60, 50, 40)

  不定長引數用*XXX來表示,此時呼叫函式時可大於引數個數的任意數。for的作用是在vartuple的元素個數內迴圈列印,結果是

  輸出:

  10

  輸出:

  70

  60

  50

  40

  # 匿名函式只能包含一個語句lambda [arg1 [,arg2,.....argn]]:expression

  sum = lambda arg1, arg2: arg1 + arg2

  # 呼叫sum函式

  print("相加後的值為 : ", sum(10, 20))

  print("相加後的值為 : ", sum(20, 20))

  lambda是匿名函式定義如下

  lambda [arg1 [,arg2,.....argn]]:expression


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69945560/viewspace-2685231/,如需轉載,請註明出處,否則將追究法律責任。

相關文章