第十二章 函式式程式設計

2021-10-10 03:32:57 字數 3348 閱讀 8575

二、高階函式

三、裝飾器

結果:什麼是匿名函式,就是在定的時時候,我們不需要定義函式名

# 匿名函式

defadd

(x,y)

:return x+y

lambda parameter_list: expression

# parameter_list 等價於函式引數x,y

# expression 等價於函式定義部分

lambda x,y: x+y
f =

lambda x,y: x+y

a = f(1,

2)print

(a)# 結果:

3

f =

lambda x,y: a = x+y

a = f(1,

2)print

(a)# 結果:

f =lambda x,y: a = x+y

^syntaxerror: cannot assign to lambda

"""---------------------- map和lambda ----------------------"""

list_x =[1

,2,3

,4,5

,6,7

,8]r =

map(

lambda x:x*x,list_x)

print

(list

(r))

# 結果:[1

,4,9

,16,25

,36,49

,64]

"""---------------------- map和lambda ----------------------"""

list_x =[1

,2,3

,4,5

,6,7

,8]list_y =[1

,2,3

,4,5

,6,7

,8]r =

map(

lambda x,y:x*x+y,list_x,list_y)

print

(list

(r))

# 結果:[2

,6,12

,20,30

,42,56

,72]

當傳入引數的個數不一樣時,會按照短的進行計算

list_x =[1

,2,3

,4,5

,6,7

,8]list_y =[1

,2,3

,4,5

,6]r =

map(

lambda x,y:x*x+y,list_x,list_y)

print

(list

(r))

# 結果:[2

,6,12

,20,30

,42]

def

reduce

(function, sequence, initial =

none

)# function 函式

# sequence 序列

# initial 初始值

"""---------------------- reduce ----------------------"""

from functools import

reduce

# 匯入reduce

list_x =[1

,2,3

,4,5

,6,7

,8]r =

reduce

(lambda x,y:x+y,list_x)

print

(r)# 結果:((1+2)+3)...+8

36

"""---------------------- reduce ----------------------"""

from functools import

reduce

# 匯入reduce

list_x =

["1"

,"2"

,"3"

,"4"

,"5"

,"6"

,"7"

,"8"

]r =

reduce

(lambda x,y:x+y,list_x,

"aaa"

)print

(r)# 執行結果:

aaa12345678

"""---------------------- 裝飾器 ----------------------"""

import time

defdecorator

(func)

:"""傳入函式引數"""

def(

*args,

**kw)

:print

(time.time())

func(

*args,

**kw)

@decorator

deff3

(function_name, function_name2,

**kw)

:print

("this is a function"

+function_name+function_name2)

print

(kw)

f3("\ta"

,"\ts"

,a=1

,c='123'

)# 結果:

1603363822.756178

this is a function a s

@decorator

def f3(function_name, function_name2,**kw):

print(「this is a function」+function_name+function_name2)

print(kw)

f3("\ta","\ts",a=1,c=『123』)

1603363822.756178

this is a function a s

### 4.裝飾器四,應用

+ 對封裝的單元進行修改的話,可以通過裝飾器的形式進行修改。

Objective C 程式設計 第十二章

預處理程式語句使用 開頭,一行中的第乙個非空字元。大部分內容都與c語言類似,相當於複習啦。預定義不是變數。不能為它賦值。實際上是字元的簡單替換。define語句常放在 import或 include語句後邊。定義乙個名稱後,可以在任何地方使用。一般放在標頭檔案,方便在多個原始檔中使用。所有預定義的名...

第十二章 併發程式設計

1 併發 邏輯控制流在時間上重疊 2 併發程式 使用應用級併發的應用程式稱為併發程式。3 三種基本的構造併發程式的方法 1 需要乙個sigchld處理程式,來 僵死子程序的資源。2 父子程序必須關閉各自的connfd拷貝。對父程序尤為重要,以避免儲存器洩露。3 套接字的檔案表表項中的引用計數,直到父...

第十二章 併發程式設計

構建併發伺服器的方法 在父程序中接收客戶端連線請求,然後建立乙個新的子程序來為每個新客戶端提供服務。假設現在有兩個客戶端和乙個伺服器,伺服器正在監聽乙個監聽描述符上的連線請求。併發過程如下 1 伺服器接受客戶端1的連線請求 2 伺服器派生乙個子程序為這個客戶端1服務 3 伺服器接受另乙個客戶端2的連...