python自學(十) 函式式程式設計

2021-09-25 11:49:05 字數 1767 閱讀 9589

三、偏函式

一、匿名函式

如題,匿名函式,直白點,就是沒有具體名稱的函式,但是不影響函式本身的使用。

作業:使用匿名函式改造下面的**

def is_odd

(n):

return n %2==

1l =

list

(filter

(is_odd,

range(1

,20))

)如下l =list

(filter

(lambda n : n%2==

1,range(1

,20))

)

二、裝飾器(decorator)

本身是對函式進行裝飾的能力,在不改變已有函式**的前提下,給函式「裝飾」新增的功能。

2.1 .name

函式的內建屬性,表示函式的名稱

def now()

:print(1

)now.__name__ // "now"

2.2 @
語法 :

def 函式 a(function ())

@adef 函式b

表示將@下面的函式,作為引數傳給@後面的函式,進行執行,明白這個才能進行下乙個

2.2 decoreate

現在要在now函式中,增加乙個列印的功能,比如開始列印和結束列印,就是需要在目標函式的執行開始和執行結束增加功能裝飾。

作業1,給目標函式列印執行時間

def log

(fn)

: def decorete

(*x,

**y)

:print

('%s 執行了 %2f ms'

%(fn.__name__,

11.567))

fn(*x,*

*y)return decorete

@log

def a

(x,y)

:print

('%d + %d = %d'

%(x,y,x+y)

)

作業2:請編寫乙個decorator,能在函式呼叫的前後列印出』begin call』和』end call』的日誌

def log

(fn)

: def decorete

(*x,

**y)

:print

('begin called %s'

% fn.__name__)

f =fn(

*x,*

*y)print

('end called %s'

% fn.__name__)

return f

return decorete

@log

def a

(x,y)

:print

('%d + %d = %d'

%(x,y,x+y)

)

三、偏函式

直白點,就是優雅的幫我們節省**

import functools

int2 = functools.

partial

(int

)int2

(2.3

)// 2

和上面裝飾器不同的是,他是返回乙個新的函式,不會對原函式進行操作

這個文件更詳細偏函式

函式式程式語言python 函式式程式設計

函式是python內建支援的一種封裝,我們通過把大段 拆成函式,通過一層一層的函式呼叫,就可以把複雜任務分解成簡單的任務,這種分解可以稱之為面向過程的程式設計。函式就是面向過程的程式設計的基本單元。而函式式程式設計 請注意多了乙個 式 字 functional programming,雖然也可以歸結...

python自學筆記(十)

1.生成單調的list 1,2,3,4,5,6 可用list range 1,11 2.生成有一定規律的list 1x1,2x2,3x3,10x10 l for x in range 1,11 x x for x in range 1,11 把要生成的表示式放在前面 for迴圈 判斷條件 根據情況選...

Python函式式程式設計

python函式式程式設計的核心思想是 把函式當資料.所以,函式可以用作函式引數,函式返回值,元組或字典成員等 閉包閉包是實現 復用的一種途徑,與類不同的是它基於函式實現.函式與它的環境變數一起就構成了閉包,閉包只有乙個返回值,那就是閉包中的函式 def line conf a,b def line...