摘要:對函數式編程提供部分支持。對于純函數編程,對任一函數,只要輸入是確定的,輸出就是確定的,可稱之為無副作用。二函數式編程的內建函數語法,接收兩個參數,一個是函數,一個是可迭代對象。
Functional Programming,函數式編程。Python對函數式編程提供部分支持。對于純函數編程,對任一函數,只要輸入是確定的,輸出就是確定的,可稱之為無副作用。
我們知道函數的計算結果可以賦值給變量,例如x = abs(-5)。
同理,變量也可以指向函數,例如f = abs。
如果一個變量指向了一個函數,那我們直接調用abs(x)與執行f(x)返回的結果是完全相同。
我們也可以把函數名看成是一個變量,例如abs()函數。執行語句abs=-5,之后調用abs(-5)就會報錯,因為此時abs這個變量已經不指向絕對值函數了,而是指向一個整數-5。
3、函數作為形參既然變量可以指向函數,函數也可以充當變量,那么一個函數就可以接收另外一個函數作為它自己的形式參數,即實現高階函數。例如:
>>> def add(x , y , f ): # 把函數作為參數傳入。 ... return f(x) + f(y) >>> add (-5,-2,abs) 7二、函數式編程的內建函數 1、map(func,seq)
語法:map(func,seq),接收兩個參數,一個是函數func,一個是可迭代對象。
作用:將傳入的func函數循環作用于seq序列的每個元素上,并返回新的可迭代對象。
注意:map()函數返回的是一個,我們可以使用list()函數將所獲得的結果以list形式返回。
舉個栗子:用map()實現f(x)=x*x
>>> def f(x): ... return x*x ... >>> map(f,[1,2,3,4,5])
當然還可以使用其他方法實現:
exp1:list( map((lambda x:x*x),[1,2,3,4,5]))
exp2:[x*x for x in [1,2,3,4,5]]
語法:reduce(func,list),必須接受兩個參數。
作用:把func函數作用在list序列上[x1,x2,x3,...]。取出序列的頭兩個元素x1和x2,作用于func,取的一個單一的值,例如a,再將a與序列的下一個元素x3做func運算,依此反復。其效果就相當于reduce(f,x1,x2,x3)=f(f(x1,x2),x3)
注意:使用reduce(),必須導入模塊from functools import reduce
大家可以自己找個栗子玩玩哈~~~
3、filter()語法:filter(func,[序列]),接收一個“過濾”函數,和一個序列。返回的是一個Iterator可迭代對象。
作用:按照func規則過濾序列,filter()把傳入的函數func依此作用于每個元素,然后根據返回值TrueorFalse,來保留為True的對應元素。
注意:跟map()類似,filter()返回的是一個可迭代對象,故需要使用list()來查看所獲得結果并返回list類型。
舉個栗子:在一個list中,刪除偶數,保留奇數。
>>> def is_odd(n): ... return n % 2 == 1 # 返回0(false) 或1(True) ... >>> list( filter(is_odd,[1,2,3,4,5,6,7,8,9]) ) [1, 3, 5, 7, 9]
恩,寫到這吧,給自己一個任務,明天寫“閉包”部分。
? thanks for watching, keep on updating...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42452.html
摘要:本文重點了解函數在中是一等對象了解中的可調用對象掌握正確定義函數參數的方法了解和中支持函數式編程的方法。歸約函數定義能夠接受一個可迭代對象并返回單個結果的函數是歸約函數。 導語:本文章記錄了本人在學習Python基礎之函數篇的重點知識及個人心得,打算入門Python的朋友們可以來一起學習并交流。 本文重點: 1、了解函數在Python中是一等對象;2、了解Python中的可調用對象;3...
摘要:本文重點了解函數在中是一等對象了解中的可調用對象掌握正確定義函數參數的方法了解和中支持函數式編程的方法。歸約函數定義能夠接受一個可迭代對象并返回單個結果的函數是歸約函數。 本文章記錄了本人在學習Python基礎之函數篇的重點知識及個人心得,歡迎打算入門Python的朋友與我一起學習交流。。 本文重點: 1、了解函數在Python中是一等對象;2、了解Python中的可調用對象;3、掌握...
摘要:項目地址中的函數式編程函數式編程英語或稱函數程序設計,又稱泛函編程,是一種編程范型,它將電腦運算視為數學上的函數計算,并且避免使用程序狀態以及易變對象。 項目地址:https://git.io/pytips Python 中的函數式編程 函數式編程(英語:functional programming)或稱函數程序設計,又稱泛函編程,是一種編程范型,它將電腦運算視為數學上的函數計算,并且...
摘要:前言繼續向下看廖大教程,看到了函數式編程這一節,當時是覺得沒啥用直接跳過了,這次準備要仔細看一遍了,并記錄下一些心得。 前言 繼續向下看廖大教程,看到了函數式編程這一節,當時是覺得沒啥用直接跳過了,這次準備要仔細看一遍了,并記錄下一些心得。 函數式編程 上學期有上一門叫 人工智能 的課,老師強行要我們學了一個叫做 prolog 的語言,哇那感覺確實難受,思維方式完全和之前學過的不一樣,...
摘要:究其原因,在于的惰性計算以及匿名函數的閉包特性。上面的代碼中,是一個變量,匿名函數只有在時才會真正調用,而此時,的值已經是當前的值,而不是之前的值了,比如,應當是的倍數,但此時的值并不是,導致成立。 問題 python對函數式編程有一定的支持,具體表現在高級函數,map,reduce,filter,partial function等幾個方面。在應用函數式編程中,需要關注函數式編程中的變...
閱讀 1849·2023-04-26 01:58
閱讀 1982·2019-08-30 11:26
閱讀 2730·2019-08-29 12:51
閱讀 3495·2019-08-29 11:11
閱讀 1183·2019-08-26 11:54
閱讀 2096·2019-08-26 11:48
閱讀 3478·2019-08-26 10:23
閱讀 2384·2019-08-23 18:30