把運算過程寫成函式巢狀呼叫的表示式
例如數學表示式(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)
預設識別數字10001
為10進製
,轉化為10進製
需要手動int('10001', base=2)
則預設識別數字10001
為2進製
,轉化為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 ...