這篇文章主要給大家講解的是,在python這門語言中,functools這門軟件使用方法,相關(guān)的代碼已經(jīng)給大家貼出來了,希望可以為大家能夠帶來一點(diǎn)幫助。
partial
用于創(chuàng)建一個(gè)偏函數(shù),將默認(rèn)參數(shù)包裝一個(gè)可調(diào)用對(duì)象,返回結(jié)果也是可調(diào)用對(duì)象。
偏函數(shù)可以固定住原函數(shù)的部分參數(shù),從而在調(diào)用時(shí)更簡(jiǎn)單。
from functools import partial int2=partial(int,base=8) print(int2('123')) #83
使用partial包裝的函數(shù)是沒有__name__和__doc__屬性的。
update_wrapper
作用:將被包裝函數(shù)的__name__等屬性,拷貝到新的函數(shù)中去。
from functools import update_wrapper def wrap2(func): def inner(*args): return func(*args) return update_wrapper(inner,func) wrap2 def demo(): print('hello world') print(demo.__name__) #demo
warps
函數(shù)是為了在裝飾器拷貝被裝飾函數(shù)的__name__。
就是在update_wrapper上進(jìn)行一個(gè)包裝
forom functools import wraps def wrap1(func): wraps(func)#去掉就會(huì)返回inner def inner(*args): print(func.__name__) return func(*args) return inner wrap1 def demo(): print('hello world') print(demo.__name__) #demo
reduce
在Python2中等同于內(nèi)建函數(shù)reduce
函數(shù)的作用是將一個(gè)序列歸納為一個(gè)輸出
reduce(function,sequence,startValue) from functools import reduce l=range(1,50) print(reduce(lambda x,y:x+y,l)) #1225
cmp_to_key
在list.sort和內(nèi)建函數(shù)sorted中都有一個(gè)key參數(shù)
x=['hello','worl','ni'] x.sort(key=len) print(x) #['ni','worl','hello']
Python3之前還提供了cmp參數(shù)來比較兩個(gè)元素
cmp_to_key函數(shù)就是用來將老式的比較函數(shù)轉(zhuǎn)化為key函數(shù)
ru_cache
允許我們將一個(gè)函數(shù)的返回值快速地緩存或取消緩存。
該裝飾器用于緩存函數(shù)的調(diào)用結(jié)果,對(duì)于需要多次調(diào)用的函數(shù),而且每次調(diào)用參數(shù)都相同,則可以用該裝飾器緩存調(diào)用結(jié)果,從而加快程序運(yùn)行。
該裝飾器會(huì)將不同的調(diào)用結(jié)果緩存在內(nèi)存中,因此需要注意內(nèi)存占用問題。
from functools import lru_cache lru_cache(maxsize=30)#maxsize參數(shù)告訴lru_cache緩存最近多少個(gè)返回值 def fib(n): if n<2: return n return fib(n-1)+fib(n-2) print([fib(n)for n in range(10)]) fib.cache_clear()#清空緩存
singledispatch
單分發(fā)器,Python3.4新增,用于實(shí)現(xiàn)泛型函數(shù)。
根據(jù)單一參數(shù)的類型來判斷調(diào)用哪個(gè)函數(shù)。
from functools import singledispatch singledispatch def fun(text): print('String:'+text) fun.register(int) def _(text): print(text) fun.register(list) def _(text): for k,v in enumerate(text): print(k,v) fun.register(float) fun.register(tuple) def _(text): print('float,tuple') fun('i am is hubo') fun(123) fun(['a','b','c']) fun(1.23) print(fun.registry)#所有的泛型函數(shù) print(fun.registry[int])#獲取int的泛型函數(shù) #String:i am is hubo #123 #0 a #1 b #2 c #float,tuple #{<class'object'>:<function fun at 0x106d10f28>,<class'int'>:<function _ at 0x106f0b9d8>,<class'list'>:<function _ at 0x106f0ba60>,<class'tuple'>:<function _ at 0x106f0bb70>,<class'float'>:<function _ at 0x106f0bb70>} #<function _ at 0x106f0b9d8>
以上就是小編整理的相關(guān)內(nèi)容,希望可以給大家?guī)韼椭?/p>
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/127620.html
摘要:函數(shù)內(nèi)省的內(nèi)容到此結(jié)束。函數(shù)式編程并不是一個(gè)函數(shù)式編程語言,但通過和等包的支持,也可以寫出函數(shù)式風(fēng)格的代碼。 《流暢的Python》筆記。本篇主要講述Python中函數(shù)的進(jìn)階內(nèi)容。包括函數(shù)和對(duì)象的關(guān)系,函數(shù)內(nèi)省,Python中的函數(shù)式編程。 1. 前言 本片首先介紹函數(shù)和對(duì)象的關(guān)系;隨后介紹函數(shù)和可調(diào)用對(duì)象的關(guān)系,以及函數(shù)內(nèi)省。函數(shù)內(nèi)省這部分會(huì)涉及很多與IDE和框架相關(guān)的東西,如果平時(shí)...
摘要:變量查找規(guī)則在中一個(gè)變量的查找順序是局部環(huán)境,閉包,全局,內(nèi)建閉包引用了自由變量的函數(shù)。閉包的作用閉包的最大特點(diǎn)是可以將父函數(shù)的變量與內(nèi)部函數(shù)綁定,并返回綁定變量后的函數(shù),此時(shí)即便生成閉包的環(huán)境父函數(shù)已經(jīng)釋放,閉包仍然存在。 導(dǎo)語:本文章記錄了本人在學(xué)習(xí)Python基礎(chǔ)之函數(shù)篇的重點(diǎn)知識(shí)及個(gè)人心得,打算入門Python的朋友們可以來一起學(xué)習(xí)并交流。 本文重點(diǎn): 1、掌握裝飾器的本質(zhì)、功...
摘要:使用單引號(hào)雙引號(hào)和三引號(hào)或來表示字符串。不可變的集合函數(shù)會(huì)以字典類型返回當(dāng)前位置的全部全局變量。用于將進(jìn)制整數(shù)轉(zhuǎn)換成進(jìn)制,以字符串形式表示。返回字符串中最大的字母,或數(shù)組中的最大值。的作用就是減少了單行函數(shù)的定義。 問題答案由本人整理 1.基礎(chǔ)語法是否熟悉?介紹一下 Python和其他語言最大的區(qū)別就是使用行和縮進(jìn),而不是大括號(hào)({})或者分號(hào)(;)來控制類、函數(shù)或者邏輯判斷。Pyt...
摘要:例如等價(jià)于到結(jié)束,但不包括。例如返回沒有每次跳躍的間距,默認(rèn)為。 異常處理 單個(gè)異常處理: try: print(num) except NameError: print(沒有定義變量) except FileNotFoundError: print(找不到文件路徑) print(1) 多個(gè)異常處理: try: print(num) # 1...
摘要:函數(shù)裝飾器和閉包嚴(yán)格來說,裝飾器只是語法糖。何時(shí)執(zhí)行裝飾器它們?cè)诒谎b飾的函數(shù)定義之后立即運(yùn)行。裝飾器突出了被裝飾的函數(shù)的作用,還便于臨時(shí)禁用某個(gè)促銷策略只需把裝飾器注釋掉。 函數(shù)裝飾器和閉包 嚴(yán)格來說,裝飾器只是語法糖。如前所示,裝飾器可以像常規(guī)的可調(diào)用對(duì)象那樣調(diào)用,其參數(shù)是另一個(gè)函數(shù)。有時(shí),這樣做更方便,尤其是做元編程(在運(yùn)行時(shí)改變程序的行為)時(shí)。 Python何時(shí)執(zhí)行裝飾器 它們?cè)?..
閱讀 928·2023-01-14 11:38
閱讀 902·2023-01-14 11:04
閱讀 759·2023-01-14 10:48
閱讀 2065·2023-01-14 10:34
閱讀 968·2023-01-14 10:24
閱讀 844·2023-01-14 10:18
閱讀 512·2023-01-14 10:09
閱讀 591·2023-01-14 10:02