<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
裝飾器: 通過閉包和將一個函數作為另一個函數引數的形式,實現已有功能的靈活呼叫
例如:
首先設定了一個time_master的計時器函數,在執行某個函數的同時,用來統計函數的耗時
那麼,如果想知道函數效能, 每次寫完新的函數後,都放到time_master函數中執行一次來統計。
——> 這是比較麻煩的。相當於雖然有了一個稱,但是所有的新買食材都需要逐個放到稱上去稱一遍,來獲得食材的重量
——> 如果能夠省略掉一次一次上稱這個步驟就好了
——> 比如每個食材進門的同時就從稱上走過,那進來的同時,也就有了重量的資料
# 涉及到計時,需要引入time模組 import time # 定義一個對函數執行耗時統計的計時器,用func作為形參來代替需要統計的函數 def time_master(func): def call_func(): print("計時器開始:函數開始呼叫:") start_time = time.time() func() end_time = time.time() print('計時器結束,函數呼叫完成') return print(f'計時器結果返回:函數呼叫耗時{end_time-start_time:.2f}') return call_func @time_master # 即在呼叫myfunc函數時,不是直接呼叫myfunc # 而是將myfunc函數作為一個引數放入到@的裝飾器中,然後去呼叫裝飾器 def myfunc(): time.sleep(2) print('myfunc函數執行') time.sleep(4) print('myfunc函數執行結束') myfunc() # 呼叫myfunc
計時器開始:函數開始呼叫:
myfunc函數執行
myfunc函數執行結束
計時器結束,函數呼叫完成
計時器結果返回:函數呼叫耗時6.01
可以理解成,本來定義了一個myfunc的函數,但這個函數本身沒有計時的功能,而恰巧有一個time_master的函數,在執行子函數的同時,還會對子函數進行計時
因此,通過重新定義 myfunc = time_master(myfunc)
, 即將myfunc作為引數傳入到time_master中,作為myfunc函數的新定義
import time def time_master(func): def call_func(): print("計時器開始:函數開始呼叫:") start_time = time.time() func() end_time = time.time() print('計時器結束,函數呼叫完成') print(f'計時器結果返回:函數呼叫耗時{end_time-start_time:.2f}') return call_func def myfunc(): time.sleep(2) print('myfunc函數執行') time.sleep(4) print('myfunc函數執行結束') myfunc = time_master(myfunc) # 和實現方法一的差距就在於是在myfunc前面@裝飾器,還是在後面對myfunc函數進行二次定義 myfunc()
計時器開始:函數開始呼叫:
myfunc函數執行
myfunc函數執行結束
計時器結束,函數呼叫完成
計時器結果返回:函數呼叫耗時6.01
實現方式1和實現方式2: 其實沒什麼區別,無非是一開始就用@time_master
來規定,還是定義完myfunc
之後,再多做一步讓myfun放入time_master
中去執行
本篇文章就到這裡了,希望能夠給你帶來幫助,也希望您能夠多多關注it145.com的更多內容!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45