1、什麼是函數函數
函數相似於一種工具,能夠重複調用。工具
2、爲何要用函數spa
防止代碼的冗餘;代碼的可讀性差。code
3、使用方法blog
3.1it
1 定義函數----->make a wapenclass
2 調用函數----->use it容器
## 函數的命名規範和變量名同樣,須要具備意義。變量
4、函數的三種分類方法
4.1 無參函數
def func(): # ()沒有參數 print('hello world') func()
4.2 空函數
def func2(): pass #代碼塊先用pass代替, 空函數 func2()
4.3 有參函數
def func1(a,b): # ()有參數, 有參函數 print(a,b) func1(1,2) # a= 1 b =2
4.4把函數名賦值給變量
def func3(): print('小豬皮蛋') f = func3 #經過把函數名賦值給變量f,調用f也能調用函數 f()
5、函數的返回值
5.1 不寫return:返回none
def u(): print(1) # u() # 1 print(u()) #None
5.2 只寫return:只有結束代碼的效果,返回none
def u(): print(1) return # u() # 1 print(u()) #None
5.3 寫return none:與上一條同樣效果
def u(): print(1) return None # u() # 1 print(u()) #None
5.4 return 返回一個值:能夠將返回的結果當作一個變量名使用
def s(a,b): return a,b s(1,2) #看不見結果 d = s(1,2) # 把函數的結果給變量d就能夠看見結果 print(d) #(1, 2)
5.5 return 返回多個值: 5.5.1 將返回的多個值默認存入元祖返回
5.5.2 函數的返回不想被修改
5.5.3 能夠本身指定返回的類型
def func1(): return 1, "2" print(func1()) #(1, '2') 返回元祖
a = 1 b = 2 c = '3' d = [4, 5] e = {'name': 'sean'} def func(a, b, c, d, e): return a, b, c, d, e print(func(a, b, c, d, e)) #(1, 2, '3', [4, 5], {'name': 'sean'}) #返回指定類型
## return 是函數結束的標誌,函數體代碼,只要執行return,函數就執行結束。
6、函數的參數
6.1 參數類型
形參: 函數在定義階段就規定的參數,至關於定義變量時的變量名。
實參: 函數在調用階段傳入的參數,至關於定義變量時的變量值。
def foo(a): #a就是形參 print(a) foo(1) #1就是實參
6.2 傳參方式
6.2.1 位置參數: 經過位置進行傳參。
def s(a,b): return a,b print(s(1,2)) #(1, 2) a=1 b=2
6.2.2 關鍵字參數: 指定參數進行傳參。
def s(a,b): return a,b print(s(b=1,a=2)) #(2, 1) b=1,a=2
6.2.3 默認參數: 在定義函數階段就已經傳入參數,若是在實參時傳入一個新參數,就會使用新參數。***不能將可變類型當參數傳遞。
def s(a,b,c=3): return a,b,c s(1,2) print(s(1,2)) #(1, 2, 3)默認把c=3也傳出來
def s(a,b,c=3): return a,b,c # s(1,2,c=4) print(s(1,2,c=4)) #(1, 2, 4)指定c=4時,就把指定值傳出來
6.2.4 可變長參數
6.2.4.1 *args : 接收全部溢出的位置參數,接收的值都被存入一個元祖。
示範:
解決方法:
# *args def f(a,b,*args): #接收溢出位置參數 print(a,b,args) # args 會把溢出的參數存入一個元祖 f(1,2,3,4,5) #1 2 (3, 4, 5)
def f(a,b,*args): #接收溢出位置參數 print(a,b,*args) # args 會把溢出的參數打散 f(1,2,3) #1 2 3
6.2.4.2 **kwargs : 接收因此溢出的關鍵字參數,接收的值都被存入一個字典。
示範:
解決方法:
# **kwargs def f(a, b, **kwargs): print(a, b, kwargs) # kwargs: 會把溢出的參數以字典返回 f(1, 2, c=3) # 1 2 {'c': 3}
def f(a, b, **kwargs): # 接收溢出關鍵字參數 print(a, b, *kwargs) # *kwargs 會把溢出的參數以字典中的key返回 f(b=1, a=2, c=3) # 2 1 c
## * 的做用: 打散你傳入的容器類型