python 4函式式程式設計

2022-02-14 08:56:31 字數 2943 閱讀 9525

1-高階函式

變數可以指向函式。def add(x, y, f): 例如f引數為函式

編寫高階函式,就是讓函式的引數能夠接收別的函式。

python內建了map()reduce()高階函式。

1.1 將list每項相乘

def

f(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 import

reduce

deffn(x, y):

return x * 10 +y

defchar2num(s):

digits =

return

digits[s]

print(reduce(fn, map(char2num, '

13579

')))把str轉換為int的函式:

1.4 filter使用

def

not_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 閉包

def

count():

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 裝飾器 (裝飾現有函式,返回乙個新的函式。)

import

functools

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)

帶參裝飾器

import

functools

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 返回值 函式定義時,所指定的引數是一種佔位符 函式定義後,如果不經過呼叫,不會被執行。函式定義時不會呼叫,呼叫時給出實際引...