這篇文章主要給大家講解的是,在python這門語言中,functools這門軟件使用方法,相關的代碼已經給大家貼出來了,希望可以為大家能夠帶來一點幫助。
partial
用于創建一個偏函數,將默認參數包裝一個可調用對象,返回結果也是可調用對象。
偏函數可以固定住原函數的部分參數,從而在調用時更簡單。
from functools import partial int2=partial(int,base=8) print(int2('123')) #83
使用partial包裝的函數是沒有__name__和__doc__屬性的。
update_wrapper
作用:將被包裝函數的__name__等屬性,拷貝到新的函數中去。
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
函數是為了在裝飾器拷貝被裝飾函數的__name__。
就是在update_wrapper上進行一個包裝
forom functools import wraps def wrap1(func): wraps(func)#去掉就會返回inner def inner(*args): print(func.__name__) return func(*args) return inner wrap1 def demo(): print('hello world') print(demo.__name__) #demo
reduce
在Python2中等同于內建函數reduce
函數的作用是將一個序列歸納為一個輸出
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和內建函數sorted中都有一個key參數
x=['hello','worl','ni'] x.sort(key=len) print(x) #['ni','worl','hello']
Python3之前還提供了cmp參數來比較兩個元素
cmp_to_key函數就是用來將老式的比較函數轉化為key函數
ru_cache
允許我們將一個函數的返回值快速地緩存或取消緩存。
該裝飾器用于緩存函數的調用結果,對于需要多次調用的函數,而且每次調用參數都相同,則可以用該裝飾器緩存調用結果,從而加快程序運行。
該裝飾器會將不同的調用結果緩存在內存中,因此需要注意內存占用問題。
from functools import lru_cache lru_cache(maxsize=30)#maxsize參數告訴lru_cache緩存最近多少個返回值 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
單分發器,Python3.4新增,用于實現泛型函數。
根據單一參數的類型來判斷調用哪個函數。
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)#所有的泛型函數 print(fun.registry[int])#獲取int的泛型函數 #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>
以上就是小編整理的相關內容,希望可以給大家帶來幫助。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/127620.html
摘要:函數內省的內容到此結束。函數式編程并不是一個函數式編程語言,但通過和等包的支持,也可以寫出函數式風格的代碼。 《流暢的Python》筆記。本篇主要講述Python中函數的進階內容。包括函數和對象的關系,函數內省,Python中的函數式編程。 1. 前言 本片首先介紹函數和對象的關系;隨后介紹函數和可調用對象的關系,以及函數內省。函數內省這部分會涉及很多與IDE和框架相關的東西,如果平時...
摘要:變量查找規則在中一個變量的查找順序是局部環境,閉包,全局,內建閉包引用了自由變量的函數。閉包的作用閉包的最大特點是可以將父函數的變量與內部函數綁定,并返回綁定變量后的函數,此時即便生成閉包的環境父函數已經釋放,閉包仍然存在。 導語:本文章記錄了本人在學習Python基礎之函數篇的重點知識及個人心得,打算入門Python的朋友們可以來一起學習并交流。 本文重點: 1、掌握裝飾器的本質、功...
摘要:使用單引號雙引號和三引號或來表示字符串。不可變的集合函數會以字典類型返回當前位置的全部全局變量。用于將進制整數轉換成進制,以字符串形式表示。返回字符串中最大的字母,或數組中的最大值。的作用就是減少了單行函數的定義。 問題答案由本人整理 1.基礎語法是否熟悉?介紹一下 Python和其他語言最大的區別就是使用行和縮進,而不是大括號({})或者分號(;)來控制類、函數或者邏輯判斷。Pyt...
摘要:例如等價于到結束,但不包括。例如返回沒有每次跳躍的間距,默認為。 異常處理 單個異常處理: try: print(num) except NameError: print(沒有定義變量) except FileNotFoundError: print(找不到文件路徑) print(1) 多個異常處理: try: print(num) # 1...
摘要:函數裝飾器和閉包嚴格來說,裝飾器只是語法糖。何時執行裝飾器它們在被裝飾的函數定義之后立即運行。裝飾器突出了被裝飾的函數的作用,還便于臨時禁用某個促銷策略只需把裝飾器注釋掉。 函數裝飾器和閉包 嚴格來說,裝飾器只是語法糖。如前所示,裝飾器可以像常規的可調用對象那樣調用,其參數是另一個函數。有時,這樣做更方便,尤其是做元編程(在運行時改變程序的行為)時。 Python何時執行裝飾器 它們在...
閱讀 911·2023-01-14 11:38
閱讀 878·2023-01-14 11:04
閱讀 740·2023-01-14 10:48
閱讀 1982·2023-01-14 10:34
閱讀 942·2023-01-14 10:24
閱讀 819·2023-01-14 10:18
閱讀 499·2023-01-14 10:09
閱讀 572·2023-01-14 10:02