日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python函数与函数式编程

發布時間:2024/4/14 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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函数与函数式编程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。