itertools子產品 生成疊代器
- 簡介 用于疊生成疊代器函數
- 使用索引
- 無限疊代器
-
count(start=0, step=1)
-
對序列 p 生成無限循環cycle(p)
-
生成無限個 elem 元素重複的疊代器,如果指定了參數 n,則隻生成 n 個 elem 元素repeat(elem [,n])
-
- 常用疊代器
-
預設生成根據序列 p 元素累加的疊代器accumulate(p[,func])
- 預設産生的新序列的每一個元素,皆為前面累加結果之和
- func 為定義計算疊代器下一個元素的值, 初始累積值為首元素
-
:将多個序列裡的元素“鍊”在一起生成新的序列chain(p, q, ...)
-
根據 selectors 序列的值對 data 序列的元素進行過濾compress(data, selectors)
-
:使用 pred 函數對 seq 序列進行過濾,丢棄掉符合pred傳回真值之前的元素,其之後全部傳回dropwhile(pred, seq)
-
:該函數和上一個函數恰好相反,擷取符合pred之前的元素takewhile(pred, seq)
-
使用 pred 函數對 seq 序列進行過濾,保留 seq 中使用 pred 計算為 True 的元素filterfalse(pred, seq)
-
:其功能類似于序列的 slice 方法islice(seq, [start,] stop [, step])
-
:使用 func 對 seq 序列的每個元素進行計算,将計算結果作為新的序列元素starmap(func, seq)
-
将 p、q 等序列中的元素按索引合并成元組,這些元組将作為新序列的元素zip_longest(p,q,...)
-
- 無限疊代器
functools子產品
- 簡介 一些函數和可調用對象的工具類
- 分布
- 類
-
functools.partial(func, *args, **keywords)
- 該類用于為 func 函數的部分參數指定參數值,進而得到一個轉換後的新函數,類似于科裡化
-
functools.partialmethod(func, *args, **keywords)
- 于為類中的方法設定參數值
-
- 函數
-
将老式的比較函數轉為關鍵字函數functools.cmp_to_key(...)
-
緩存算法來緩存相對耗時的函數結果,避免傳入相同的參數重複計算@lru_cache(maxsize=128, typed=False)
-
functools.reduce(function, iterable[, initializer])
- 将初始值(預設為 0,可由 initializer 參數指定), 多值化一
-
@functools.singledispatch
- 應用場景 類型斷言對函數 函數裝飾器
- 函數裝飾器的作用是根據函數參數類型轉向調用另一個函數,進而實作函數重載的功能
- 産生會在函數變量名上注冊方法,
dispatch() ,register(), registry.keys()
-
類裝飾器,用于為類自動生成比較方法, 生成全部與排序有關的方法@total_ordering(cls)
- 開發者隻要提供 lt()、le()、gt()、ge() 其中之一(最好能提供 eq() 方法),
- @functools.total_ordering 裝飾器就會為該類生成剩下的比較方法
-
- wrapper包裝
- 主要就是讓包裝函數的 name、doc 屬性與被包裝函數保持一緻
-
functools.update_wrapper(wrapper, wrapped, assigned=WRAPPER_ASSIGNMENTS, updated=WRAPPER_UPDATES)
- 對wrapper 函數進行包裝,使之看上去就像 wrapped(被包裝)函數。 函數
-
@functools.wraps(wrapped, assigned=WRAPPER_ASSIGNMENTS, updated=WRAPPER_UPDATES)
- 該函數裝飾器用于修飾包裝函數,使包裝函數看上去就像 wrapped 函數。 函數裝飾器
- 類