您好,登錄后才能下訂單哦!
這篇文章主要介紹“Python裝飾器功能介紹”,在日常操作中,相信很多人在Python裝飾器功能介紹問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Python裝飾器功能介紹”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
示例:尋找寶藏。在一個嵌套元組tuple或列表list中尋找元素'Gold Coin'
import time from functools import lru_cache def find_treasure(box): for item in box: if isinstance(item, (tuple, list)): find_treasure(item) elif item == 'Gold Coin': print('Find the treasure!') return True start = time.perf_counter() find_treasure(('sth', 'sth', 'sth', ('Bad Coin', 'normal coin', 'fish', 'sth', 'any sth'), ('Bad Coin', 'normal coin', 'fish', 'sth', 'any sth'), 'Gold Coin', )) end = time.perf_counter() run_time_without_cache = end - start print('在沒有Cache的情況下,運行花費了{} s。'.format(run_time_without_cache)) @lru_cache() def find_treasure_quickly(box): for item in box: if isinstance(item, (tuple, list)): find_treasure(item) elif item == 'Gold Coin': print('Find the treasure!') return True start = time.perf_counter() find_treasure_quickly(('sth', 'sth', 'sth', ('Bad Coin', 'normal coin', 'fish', 'sth', 'any sth'), ('Bad Coin', 'normal coin', 'fish', 'sth', 'any sth'), 'Gold Coin', )) end = time.perf_counter() run_time_with_cache = end - start print('在有Cache的情況下,運行花費了{} s。'.format(run_time_with_cache)) print('有Cache比沒Cache快{} s。'.format(float(run_time_without_cache-run_time_with_cache)))
最終輸出
Find the treasure!
在沒有Cache的情況下,運行花費了0.0002182829999810565 s。
Find the treasure!
在有Cache的情況下,運行花費了0.00011638000000857573 s。
有Cache比沒Cache快0.00010190299997248076 s。
注記:運行這個示例時我的電腦配置如下
CPU:AMD Ryzen 5 2600 RAM:Kingston HyperX 8Gigabytes 2666
約使用7個月。
這個裝飾器可以在函數運行時記錄它的輸入值與運行結果。當元組('Bad Coin', 'normal coin', 'fish', 'sth', 'any sth')出現第二次時,加了這個裝飾器的函數find_the_treasure_quickly
不會再次在遞歸時對這個元組進行查找,而是直接在“備忘錄”中找到運行結果并返回!
到此,關于“Python裝飾器功能介紹”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。