自學python第七天

2021-09-25 02:48:25 字數 2237 閱讀 7880

函式式程式設計

函式式程式設計的乙個特點就是,允許把函式本身作為引數傳入另乙個函式,還允許返回乙個函式!

函式式程式設計就是一種抽象程度很高的程式設計正規化,純粹的函式式程式語言編寫的函式沒有變數,因此,任意乙個函式,只要輸入是確定的,輸出就是確定的,這種純函式我們稱之為沒有***。而允許使用變數的程式語言,由於函式內部的變數狀態不確定,同樣的輸入,可能得到不同的輸出,因此,這種函式是有***的

a.把乙個函式賦值給乙個變數,那麼可以通過這個變數來呼叫函式

高階函式

既然變數可以指向函式,函式的引數能接收變數,那麼乙個函式就可以接收另乙個函式作為引數,這種函式就稱之為高階函式。

這裡有幾個概念  區分起來可能會有點模糊  我這裡舉乙個例子

物件導向:乙個有諸多技能的工人,培養n個學徒,去幹很多事情;

函式式程式設計:一群只有單個技能的工人,讓他們在流水線上同時工作;

高階函式:就是這個廠的廠長,只需要指派各種人去幹活。

map/reduce

map()傳入的第乙個引數是f,即函式物件本身。由於結果r是乙個iteratoriterator是惰性序列,因此通過list()函式讓它把整個序列都計算出來並返回乙個list。

當然也可以用迴圈來寫,但是這個函式你可以任意設定,比較靈活,而且效率也比較高

reduce

再看reduce的用法。reduce把乙個函式作用在乙個序列[x1, x2, x3, ...]上,這個函式必須接收兩個引數,reduce把結果繼續和序列的下乙個元素做累積計算,其效果就是:

這裡需要注意的是  要使用reduce  必須要有

from functools import reduce
這個類似於c語言中的標頭檔案

reduce 返回乙個值,這個返回的型別與你的函式有關

map和reduce結合可以搞很多事情

這裡是乙個簡短的例子,我大概解釋一下

這個『13579』可以將它看成乙個序列,正好map接收的是乙個序列 所以就將每乙個1 3 5 7 9

作用於char2num  然後傳入map就形成了[1,3,5,7,9]

接著在呼叫reduce就可以得出結果

filter

fliter()函式用於過濾序列

map()類似,filter()也接收乙個函式和乙個序列。和map()不同的是,filter()把傳入的函式依次作用於每個元素,然後根據返回值是true還是false決定保留還是丟棄該元素。、

舉乙個簡單的例子

高階函式sorted

可以傳入函式,函式也就是排序標準

當然也可以反向排序

對於dict的排序

python基礎自學 第七天

0.1變數的引用 1.1引用的概念 注意 如果變數已經被定義,當給乙個變數賦值的時候,本質上是修改了資料的引用 1.2函式的引數和返回值的傳遞 呼叫函式時,本質上傳遞的是實參儲存資料的引用 實參的記憶體位址 而不是實參儲存的資料 02.可變和不可變型別 不可變型別,記憶體中資料不允許被修改 數字型別...

初學Python第七天

繼上次10.10注釋,到了序列這一章,開乙個新的章節 一 通用序列操作 定義 python中序列的通用操作,在列表 list 和元組 tuple 中都會用到。基礎的8類操作種類 索引 index 分片 slice 相加 add 乘法 multiply 成員 member 長度 length 最小值 ...

Python小白第七天

1.1變數 變數不需要先宣告 在使用變數前,需要對其先賦值 變數名可以包括字母 數字 下劃線,但不能以數字開頭 區分大小寫 1.2字串 雙引號或單引號內的東西 python i love you 或 python i love you 如果字串中需要出現單引號或雙引號,此時需要使用轉義符號 對出現的...