帶引數的裝飾器
500個函式
@timmer_out(flage)
def timmer_out(flag):
def timmer(func):
def inner(*args, **kwargs):
if flag:
start = time.time()
ret = func(*args, **kwargs)
end = time.time()
print(end - start)
return ret
else:
ret = func(*args, **kwargs)
return ret
return inner
return timmer
首先是執行函式timmer_out(flage)然後返回timmer
前面的@加返回的timmer構造語法糖
過程為timmer_out(flag) == timmer
@timmer == wahaha = timmer(wahaha)
多了乙個引數,多次呼叫
可以理解為
timmer = timmer_out(flage)
然後@timmer原理一樣
這樣可以控制裝飾器是否使用並且可以控制多個裝飾器
# 帶引數的裝飾器
# 500個函式
import time
flage = true
def timmer_out(flag):
def timmer(func):
def inner(*args, **kwargs):
if flag:
start = time.time()
ret = func(*args, **kwargs)
end = time.time()
print(end - start)
return ret
else:
ret = func(*args, **kwargs)
return ret
return inner
return timmer
# flage = false
@timmer_out(flage)
def wahaha():
time.sleep(0.1)
print("wahaha")
@timmer_out(flage)
def erguotou():
time.sleep(0.5)
print('erguotou')
wahaha()
erguotou()
乙個函式被多個裝飾器裝飾
流程:先執行第乙個裝飾器執行到被裝飾函式之前的**
在執行第二個裝飾器執行到被裝飾函式之前的**
執行被裝飾函式
在執行第二個裝飾器執行被裝飾函式之後的**
在執行第乙個裝飾器執行被裝飾函式之後的**
語法糖先執行離函式近的
# 多個裝飾器裝飾乙個函式
記錄使用者的登入日誌
計算這個函式的執行時間
如果這樣要先寫使用者的登入日誌裝飾器在使用執行時間的裝飾器
假期python複習
原則 開放封閉原則 裝飾器的固定模式 裝飾器的作用 在不想修改函式的呼叫方式但是還是想在原來的函式前後新增功能 原則 開放封閉原則 開放 對擴充套件是開放的 封閉 對修改是封閉的 語法糖 在被裝飾的函式上加 裝飾器函式名 相當於func timmer func 裝飾帶引數函式的裝飾器 args 任意...
假期週報(3)
一.本週所做的事 1 確定了暑假的目標是,學習完成並且吃透吳恩達的機器學習入門課程,並且對能夠進行淺層次的應用。2 完成了機器學習前三講內容的學習,並且記錄了學習筆記 3 開始了解關於產品方面的知識,還有產品經理所需要學習的技能 看書 2個小時 讀書筆記 1個小時 學習投資方面的知識 3個小時 0個...
假期作業3
第三章 1.dom操作 訪問節點 使用getelement系列方法訪問指定節點 getelementbyid getelementsbyname getelementsbytagname 根據層次關係訪問節點 節點屬性 屬性名稱 描述parentnode 返回節點的父節點 childnodes 返回...