Python中的函數(一)

  • 2020 年 1 月 19 日
  • 筆記

一 數學定義的函數與Python中的函數                                         

數學函數的定義:一般在一個變化過程中,如果有兩個變數,X,Y,並且對於x的每一個確定值,y都有唯一與之對應的值,那麼我們把x稱為自變數,y為因變數,y為x的函數。x的取值範圍就是函數的定義域。   如 : y = x + 5

python中函數的定義:函數是邏輯結構化和過程化的編程方法。

為什麼要有函數呢?

  • 程式碼可重用
  • 保持一致性
  • 可擴展性

python中函數定義的方法:

1 def test(x,y):  2     res = x + y  3     return res
  • def:定義函數的關鍵字
  • test:函數名
  • ():內可定義形參
  • res = x + y :程式碼塊
  • return:返回值

補充:編程中的函數和數學意義上的函數是截然不同的概念,編程中的函數為完成一定功能的邏輯,數學定義的函數是一個等式。

二 函數,過程,返回值

過程的定義:過程就是簡單特殊沒有返回值的函數

 1  def test1(x,y):   2      res = x + y   3      print(res)   4   5  def test2(x,y):   6      res = x + y   7      print(res)   8      return res   9  10 print(test1(1,2))  11 print(test2(1,2))

總結:當一個函數沒有用return時,python解析器會隱式的返回None,所以python中過程也是函數。

 1 def test1():   2     pass   3   4 def test2():   5     return 1   6   7 def test3():   8     return 1,2,3,"abc"   9  10 print(test1())  11 print(test2())  12 print(test3())

終結:

  • 返回值數=0:返回None
  • 返回值數=1:返回object
  • 返回值數>1:返回tuple

三 函數的參數

形參和實參

  • 形參:形參變數只有在被調用時才被分配記憶體單元,在調用結束時,立即釋放所分配的記憶體單元。因此,形參只在函數內部有效,函數調用結束返回主調函數後不能繼續使用該形參。
  • 實參:實參可以是常量,變數,表達式,函數等,在進行函數調用時,它們必須要有卻定的值(要有定義),以便把值傳給形參。 
1 def test(x,y):   #x,y為形參  2     res = x + y  3     return res  4  5 a = 1  6 b = 2  7 c = test(a,b) #a,b為實參  8 print(c)    x,y為形參  a,b為實參

可變長參數

1 def test(x,y={1:2},z=15,*args,**kwargs):  2     print(x)  3     print(y)  4     print(z)  5     print(args)  6     print(kwargs)  7  8 test(1,2,3,4,5,[6,5],*[5,6],**{"sdf":2,"abc":2})  輸出:  print(x):1  print(y):2  print(z):3  print(args):(4, 5, 6, 5, [5, 6])  print(kwargs):{'sdf': 2, 'abc': 2}
  • x,y,z:單個參數名必須放前面
  • y,z:默認值參數必須放在沒賦值參數後面
  • *args:必須放在以上參數後面,裡面裝的是傳進來多的參數,然後組成元組
    • 參數不加*,默認將參數當成整體傳入
    • 參數前加*,將參數遍歷出來傳入
  • **kwargs:必須放在以上參數後面,參數前面加入**,表示傳入字典,將傳入的元素組成字典

 函數的定義和參數的傳入都必須遵循上面規則。