functools 是python2.5被引人的,一些工具函式放在此包裡。
python2.7中
python3.6中
import functools'_hashedseq', '__all__', '__builtins__', '__cached__', '__doc__',print(dir(functools))
'__file__', '__loader__', '__name__', '__package__', '__spec__',
'_c3_merge', '_c3_mro', '_compose_mro', '_convert',
'_find_impl', '_ge_from_gt', '_ge_from_le', '_ge_from_lt',
'_gt_from_ge', '_gt_from_le', '_gt_from_lt', '_le_from_ge',
'_lt_from_gt', '_lt_from_le', '_make_key', 'cmp_to_key',
'get_cache_token', 'lru_cache', 'namedtuple', 'partial',
'partialmethod', 'recursive_repr', 'reduce', 'singledispatch',
python3中增加了更多工具函式,做業務開發時大多情況下用不到,此處介紹使用頻率較高的2個函式。
partial函式(偏函式)
把乙個函式的某些引數設定預設值,返回乙個新的函式,呼叫這個新函式會更簡單。
import functoolswraps函式def showarg(*args, **kw):
print(args)
print(kw)
p1 = functools.partial(showarg, 1, 2, 3)
p1()
p1(4, 5, 6)
p1(a='python', b='itcast')
p2 = functools.partial(showarg, a=3, b='linux')
p2()
p2(1, 2)
p2(a='python', b='itcast')
'''(1, 2, 3)
{}(1, 2, 3, 4, 5, 6)
{}(1, 2, 3)
()(1, 2)
()'''
使用裝飾器時,有一些細節需要被注意。例如,被裝飾後的函式其實已經是另外乙個函式了(函式名等函式屬性會發生改變)。
新增後由於函式名和函式的doc發生了改變,對測試結果有一些影響,例如:
def note(func):所以,python的functools包中提供了乙個叫wraps的裝飾器來消除這樣的***。例如:"note function"
print('note something')
return func()
@note
def test():
"test function"
print('i am test')
test()
print(test.__doc__)
'''note something
i am test
'''
import functoolsdef note(func):
"note function"
@functools.wraps(func)
print('note something')
return func()
@note
def test():
"test function"
print('i am test')
test()
print(test.__doc__)
'''note something
i am test
test function
'''
Python 之 常用庫
知識點 標準庫 擴充套件庫標準庫 說明builtins 內建函式預設載入 os作業系統介面 syspython自身的執行環境 functools 常用的工具 json 編碼和解碼 json 物件 logging 記錄日誌,除錯 multiprocessing 多程序threading 多執行緒cop...
Python常用庫之sys
1.退出程式 import sys print 1 sys.exit 退出程式 print 2 程式已退出,不會列印 2.從某個路徑匯入包 import sys3.獲取執行指令碼時傳入的引數 import sys print len sys.ar for id,i in enumerate sys....
機器學習之常用Python庫
pythong tutorial 提供常用的數值陣列 矩陣等函式。官網 numpy doc numpy user guide user index.html 文件quickstart user quickstart.html numpy basics user basics.html numpy r...