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:必須放在以上參數後面,參數前面加入**,表示傳入字典,將傳入的元素組成字典
函數的定義和參數的傳入都必須遵循上面規則。