1-高階函式
變數可以指向函式。def add(x, y, f): 例如f引數為函式
編寫高階函式,就是讓函式的引數能夠接收別的函式。
python內建了map()
和reduce()高階
函式。
1.1 將list每項相乘
deff(x):
return x*x
r = map(f, [1,2,3,4,5,6,7])
list(r)
#[1, 4, 9, 16, 25, 36, 49] 每個變數的平方
1.2 把int轉成字串
list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9])) #把int轉成字串
1.3 把str轉換為int的函式:
from functools importreduce
deffn(x, y):
return x * 10 +y
defchar2num(s):
digits =
return
digits[s]
print(reduce(fn, map(char2num, '
13579
')))把str轉換為int的函式:
1.4 filter使用
defnot_empty(s):
return s and
s.strip()
list(filter(not_empty, ['a
','b
','',none,'
c','
']))
1.5 sorted使用
print(sorted([1,22,33,21,8])) #預設排序
print(sorted(['
a','
z','
b','
c'],key=str.lower)) #
按小寫排序
print(sorted(['
a','
z','
b','
c'],key=str.lower,reverse=true)) #
按小寫反向排序
defmy_sorted(item):
return
item[0]
l = [('
bob', 75), ('
adam
', 92), ('
bart
', 66), ('
lisa
', 88)]
sorted(l,key=my_sorted) #
自定義的排序
1.6 閉包
defcount():
fs =
for i in range(1, 4):
deff():
return i*i
return
fsf1, f2, f3 = count() #
9 9 9 a,b,c = [1,2,3] #a=1,b=2,c=3
1.7 匿名函式 如: f= lambda x: x*x
list(map(lambda x: x*x, [1,2,3,4,5,6,7,8,9]))#[1, 4, 9, 16, 25, 36, 49, 64, 81]
1.8 裝飾器 (裝飾現有函式,返回乙個新的函式。)
importfunctools
deflog(func):
@functools.wraps(func)
#
print("
call %s():
" % func.__name__
);
return func(*args, **kw)
return
@log
defnow():
print('
2018-05-11')
now()
#相當 now = log(now)
帶參裝飾器
importfunctools
deflog1(text):
defdecorator(func):
@functools.wraps(func)
print('
%s %s:
' % (text, func.__name__
))
return func(*args, **kw)
return
return
decorator
@log1(
'exceue
')
defnow1():
print('
2018-5-5')
now1()
#now = log('execute')(now)
#我們來剖析上面的語句,首先執行log('execute'),返回的是decorator函式,
#
1.9 偏函式(通過設定引數的預設值,可以降低函式呼叫的難度。而偏函式也可以做到這一點)
int('10111
',base=2) #
結果23, 以2進行進行轉換
import
functools
int2 = functools.partial(int, base=2)#
自定義的偏函式
print(int2('
10111
')) #
結果23,
python (4)函式式程式設計 高階函式
函式名也是變數 abs 10 abs 10 traceback most recent call last file line 1,in typeerror int object is not callable函式本身也可以賦值給變數,即 變數可以指向函式。f abs f f abs f 10 10...
Python(4) 函式與模組
def hi print hello,world for i in range 0,4 1 hi def listsum l res 0 for i in l res res i return res l2 1,2,3,4,5,6,7,8,9,10 sum2 listsum l2 print sum...
Python 4 函式和抽象
二 函式的使用和呼叫 函式是一段具有特定功能的 可重用的語句組,是一種功能的抽象,一般函式表達特定功能,可以降低編碼難度,可以 復用。def 函式名 引數 函式體 return 返回值 函式定義時,所指定的引數是一種佔位符 函式定義後,如果不經過呼叫,不會被執行。函式定義時不會呼叫,呼叫時給出實際引...