python函数与函数式编程
生活随笔
收集整理的這篇文章主要介紹了
python函数与函数式编程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在理解函數式編程之前,我還是對函數的調用,參數傳遞以及函數的嵌套調用一頭霧水,還是花了點時間整理了寫思緒,以便我后面對裝飾器復雜的參數傳遞和函數的調用的理解。
函數的定義
def 函數名():
????? 代碼塊
例如:
def func_name():blockreturn value #return語句表示函數執行到此結束,如果沒有return語句則會返回None,有return沒有語句也是返回None另外,Python中不允許前向引用,即在函數定義之前,不允許調用該函數。所以函數必須先定義再調用,否則會報錯,找不到該函數的定義。
print func_name() #若在函數定義前調用函數,則報錯Traceback (most recent call last): File "<pyshell#72>", line 1, in <module>print func_name() NameError: name 'func_name' is not defined參數的傳遞
>>> def f(a,b,c=10): #定義三個參數,設置c的默認值為10return a+b+c>>> print(f(3,2)) #傳遞參數的值,默認匹配沒有默認值的參數 15 >>> print(f(3,2,1)) #傳遞參數的值,若傳遞的參數都有值,則不會取默認值 6>>>def func(*name): #包裹傳遞,將所有的參數傳遞給name元組print type(name)print name>>> func(1,4,6) <type 'tuple'> (1, 4, 6) >>> func(5,6,7,1,2,3) <type 'tuple'> (5, 6, 7, 1, 2, 3)>>> def func(**dict): #字典收集所有的關鍵字print type(dict)print dict>>> func(a=1,b=9) <type 'dict'> {'a': 1, 'b': 9} >>> func(m=2,n=1,c=11) <type 'dict'> {'c': 11, 'm': 2, 'n': 1}?函數嵌套
python程序,一個函數在另外一個函數的里面,外層的函數返回的是里層函數。
函數嵌套時,內層函數可以訪問外層函數的變量,但不能對其變量重新賦值。
>>> def yao1(a=1,b=32):def yao2(c=54):def yao3(d=3):def yao4(e=10):return a+b+c+d+ereturn yao4return yao3return yao2>>> print yao1()()()() 100?函數式編程
函數式編程與函數不同,函數式編程是將一個函數作為參數傳遞給另一個函數,最后返回一個函數。
典型的函數式編程輔助函數有:reduce/map/filter等函數,一需要認識和積累這些輔助和內置函數,其二了解匿名函數lambda的使用,讓函數式編程的代碼更加簡潔和易讀。
>>> number =[2, -5, 9, -7, 2, 5, 4, -1, 0, -3, 8] #給列表賦值 >>> sum = filter(lambda x: x>0, number) #filter(func,number):從number的item中依次篩選符合func條件的元素,即從number列表中篩選x>0的元素并返回#lambda args: expression >>> average = reduce(lambda x,y: x+y, sum)/len(sum) #reduce(func,number):先將number元組中的前兩個元素執行func函數,返回的值繼續與下一個元素一起執行func函數 >>> print average 5 >>> >>>print map(lambda x:x%3,range(6)) #map(func,seq):seq中的每個元素都經過了func函數的作用,重新得到了func(seq[n])組成的列表 [0, 1, 2, 0, 1, 2]轉載于:https://www.cnblogs.com/evablogs/p/6699515.html
總結
以上是生活随笔為你收集整理的python函数与函数式编程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端学习 -- 颜色
- 下一篇: servlet监听完成统计在线人数,显示