python 學習筆記3

2021-07-24 18:37:32 字數 2546 閱讀 5212

函式式程式設計

既然變數可以指向函式,函式的引數能接收變數,那麼乙個函式就可以接收另乙個函式作為引數,這種函式就稱之為高階函式。、

把f應用到一串列上面

def f(x):

… return x * x

map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])

[1, 4, 9, 16, 25, 36, 49, 64, 81]

reduce把乙個函式作用在乙個序列[x1, x2, x3…]上,這個函式必須接收兩個引數,reduce把結果繼續和序列的下乙個元素做累積計算,其效果就是:

reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)

def add(x, y):

… return x + y

… reduce(add, [1, 3, 5, 7, 9])

25例子

如果考慮到字串str也是乙個序列,對上面的例子稍加改動,配合map(),我們就可以寫出把str轉換為int的函式:

def fn(x, y):

… return x * 10 + y

… def char2num(s):

… return [s]

… reduce(fn, map(char2num, 『13579』))

13579

裝飾器

def

log(text):

defdecorator

(func):

@functools.wraps(func)

def(*args, **kw):

print

'%s %s():' % (text, func.__name__)

return func(*args, **kw)

return decorator

使用方法

@log(「test」)

簡單總結functools.partial的作用就是,把乙個函式的某些引數給固定住(也就是設定預設值),返回乙個新的函式,呼叫這個新函式會更簡單。

偏函式python的functools模組提供了很多有用的功能,其中乙個就是偏函式(partial function)。要注意,這裡的偏函式和數學意義上的偏函式不一樣。

在介紹函式引數的時候,我們講到,通過設定引數的預設值,可以降低函式呼叫的難度。而偏函式也可以做到這一點。舉例如下:

int()函式可以把字串轉換為整數,當僅傳入字串時,int()函式預設按十進位制轉換:

int(『12345』)

12345

但int()函式還提供額外的base引數,預設值為10。如果傳入base引數,就可以做n進製的轉換:

int(『12345』, base=8)

5349

int(『12345』, 16)

74565

假設要轉換大量的二進位制字串,每次都傳入int(x, base=2)非常麻煩,於是,我們想到,可以定義乙個int2()的函式,預設把base=2傳進去:

def int2(x, base=2):

return int(x, base)

這樣,我們轉換二進位制就非常方便了:

int2(『1000000』)

64 int2(『1010101』)

85 functools.partial就是幫助我們建立乙個偏函式的,不需要我們自己定義int2(),可以直接使用下面的**建立乙個新的函式int2:

import functools

int2 = functools.partial(int, base=2)

int2(『1000000』)

64 int2(『1010101』)

85 所以,簡單總結functools.partial的作用就是,把乙個函式的某些引數給固定住(也就是設定預設值),返回乙個新的函式,呼叫這個新函式會更簡單。

注意到上面的新的int2函式,僅僅是把base引數重新設定預設值為2,但也可以在函式呼叫時傳入其他值:

int2(『1000000』, base=10)

1000000

最後,建立偏函式時,實際上可以接收函式物件、*args和**kw這3個引數,當傳入:

int2 = functools.partial(int, base=2)

實際上固定了int()函式的關鍵字引數base,也就是:

int2(『10010』)

相當於:

kw =

int(『10010』, **kw)

當傳入:

max2 = functools.partial(max, 10)

實際上會把10作為*args的一部分自動加到左邊,也就是:

max2(5, 6, 7)

相當於:

args = (10, 5, 6, 7)

max(*args)

結果為10。

python學習筆記3

1 字串的格式化操作 format variable format 是格式的樣式,variable 是要被格式化的變數 format 有如下幾種形式 o 將數值轉換為八進位制 x 將數值轉換為十六進製制 d 整數轉換符號 s 字串轉換符號 如下 o 100 144 o 100 加入乙個 號可輸出標準...

python 學習筆記3

2014 10 23 三種內建的資料結構 列表 元組和字典 list len list list.sort 修改列表本身,而不是返回乙個修改後的列表 列表時可變的,字串不可變 for item in list 遍歷 del list 0 刪除專案,自動補齊。print語句的結尾的逗號消除列印的換行符...

Python學習筆記3

條件和迴圈語句 生成隨機數的函式,此處說明一下,python是通過乙個方程來產生隨機數的,所以這些隨機數並不是真正隨機的,產生他們的方式叫做偽隨機。載入模組,本人理解模組類似c裡的庫,模組 module 含有可供其他程式使用的 的檔案,這些模組通常是按照一定的相關性進行組織的,載入模組使用 impo...