#面向對象:特色:類(class)#面向過程:過程(def)#函數式編程:函數(def)#定義函數:def func1():# """test....""" print('in the func1') return 0#定義過程def func2() """test2..........""" print('in the func2')#調用1,x=func1();y=func2()#過程和函數均可以調用,過程就是沒有返回值的函數。# 面向過程的程序設計方法就是用一個個def定義的過程拼接在一塊兒。把一段段邏輯,一段段功能包含到一個def定義的過程當中,用的時候調用#定義函數三大優勢:代碼重用,減小重複代碼;保持一致;可擴展性def test1(): print('in the test1')def test2(): print('in the test2') return 0def test3(): print('in the test3') #return 1,'hello',['alex','wupeiqi'],{'name':'alex'} return test2#能夠return,test2x=test1()y=test2()z=test3()print(x)print(y)print(z)#返回值數=0:返回none#返回值數=1:返回object#返回值數>1:返回tuple(一個元組,return的多個值撞到一個元組中)#爲何要返回值:由於須要一個執行結果,後續程序可能須要根據其結果進一步操做#——————————————————————有參數的函數--------------------------------------------------------def test(x,y,z): print(x) print(y) print(z)# test(y=2,x=1) #關鍵字調用,與形參順序無關# test(1,2) #位置參數調用,與形參一一對應,1,2是實參,x,y是形參#test(x=2,3)test(3,z=2,y=6)#關鍵字和位置參數同在,以位置調用爲首標準。關鍵參數是不能寫在位置參數前面的!!#-----------------------------------------------------------------------------------------------#*args:接受N個位置參數,轉換成元組形式# def test(*args):# print(args)## test(1,2,3,4,5,5)# test(*[1,2,4,5,5])# args=tuple([1,2,3,4,5])# def test1(x,*args):# print(x)# print(args)## test1(1,2,3,4,5,6,7)#**kwargs:接受N個關鍵字參數,轉換成字典的方式# def test2(**kwargs):# print(kwargs)# print(kwargs['name'])# print(kwargs['age'])# print(kwargs['sex'])## test2(name='alex',age=8,sex='F')# def test3(name,**kwargs):# print(name)# print(kwargs)## test3('alex',age=18,sex='m')# def test4(name,age=18,**kwargs):# print(name)# print(age)# print(kwargs)## test4('alex',age=34,sex='m',hobby='tesla')def test4(name,age=18,*args,**kwargs):#參數組必定放在後面 print(name) print(age) print(args) print(kwargs) logger("TEST4")def logger(source): print("from %s" % source)test4('alex',age=34,sex='m',hobby='tesla')#---------------------------------------------------高階函數------------------------------------------------------#變量能夠指向函數,函數的參數能接收變量,那麼一個函數就能夠接收另外一個函數做爲參數,這種函數就稱之爲高階函數。def add(a,b,f):#等於把f替換成abs return f(a)+f(b)res=add(3,-6,abs)print(res)