python學習筆記之函式式程式設計

2021-10-06 20:28:50 字數 3725 閱讀 8724

把運算過程寫成函式巢狀呼叫的表示式

例如數學表示式(1 + 2) * 3 - 4

面向過程

a =1+

2;b = a *3;

c = b -

4;

函式式

result = subtract(multiply(add(1,2), 3), 4)

add(1,2).multiply(3).subtract(4)

merge([1,2],[3,4]).sort().search("2")

>>

>

absin function abs

>

>>

> f =

abs>>

> f

in function abs

>

>>

> f(-10

)10

使用函式做引數

def

han(a,b,f)

:print

(f(a)

+ f(b)

)han(-10

,9,abs

)# f = abs

>>

>

max,

min=

min,

max>>

>

maxin function min

>

>>

>

print

(max(1

,2,3

,4))

1

map使用:乙個函式,計算,乙個iterable==》生成iterator

def

f(x)

:return x*x

r =map

(f,range(11

))print

(list

(r))

map是惰性序列,通過list計算全部

reduce使用:乙個函式(必須有兩個引數),計算,乙個iterable==》生成iterator

reduce(fn,[x1,x2,x3,x4])==fn( fn( fn(x1,x2), x3 ), x4 )

# 使[3,2,1] ==> 321

from functools import

reduce

deffn

(x,y)

:return x*

10+ y

print

(reduce

(fn,[3

,2,1

]))321

數字字串轉化為數字整數 int()強制轉化

from functools import

reduce

digits =

defstr2int

(s):

deffn

(x,y)

:# 數字列表轉化為數字

return x*

10+ y

defchar2num

(s):

# 數字字串轉化為數字列表--字典對應查詢

return digits[s]

return

reduce

(fn,

map(char2num,s)

)# map reduece 結合使用

print

(str2int(

'342342'

))

過濾函式:乙個判斷函式 + 乙個iterable ==> iterator

filter()是乙個惰性序列,需要list()將其計算完

def

ishui

(s):

return

str(s)

==str

(s)[::

-1]print

(list

(filter

(isodd,

range(1

,200))

))

排序得到臨時結果,不改變原序列,先根據函式對映得到新的iterable,再排序

但是排序結果還是原序列,不會改變,預設從低到高

語法:sorted(iterable, key = 函式, reverse = true)

>>

>

sorted

(l,key =

abs)

# 對絕對值後排序,但是序列還是原序列[1

,3,-

8,10,

-10]>>

>

sorted([

'bob'

,'about'

,'zoo'

,'credit'

],key =

str.lower,reverse =

true)[

'zoo'

,'credit'

,'bob'

,'about'

]

# 對成績從高到低排列

l =[

('bob',75

),('adam',92

),('bart',66

),('lisa',88

)]defby_score

(t):

return

-t[1

]# 注意這裡加了乙個 負號-

l2 =

sorted

(l, key=by_score)

將簡單的顯式函式用lambda 引數:返回表示式一句話隱式表示

def

f(x)

:return x * x

等價於lambda x: x * x

對於某函式的預設變數int('10001', base=10)預設識別數字1000110進製,轉化為10進製

需要手動int('10001', base=2)則預設識別數字100012進製,轉化為10進製

可以直接使用偏函式建立乙個新的函式

import functools

int2 = functools.partial(

int, base=2)

>>

> int2(

'1000000'

)64

廖雪峰Python教程學習筆記4 函式式程式設計

函式式程式設計就是一種抽象程度很高的程式設計正規化,其乙個特點是允許把函式本身作為引數傳入另乙個函式,還允許返回乙個函式!把函式作為引數傳入,這樣的函式稱為高階函式,函式式程式設計就是指這種高度抽象的程式設計正規化。既然變數可以指向函式,函式的引數能接收變數,那麼乙個函式就可以接收另乙個函式作為引數...

Python學習筆記之 函式式程式設計

函式式程式設計的乙個特點就是,允許把函式本身作為引數傳入另乙個函式,還允許返回乙個函式。變數可以指向函式 f abs f 10 10函式名也是變數 abs 10 abs 10 traceback most recent call last file line 1,in typeerror int o...

python學習之dedecms exp編寫

針對織夢5.7 sp1遠端檔案包含getshell exp編寫,漏洞分析請檢視網上分析,不再贅述。exp coding utf 8 import requests import time def dada url url index url install index.php khtml,like ...