裝飾器
1.裝飾器是在不改變原函式的執行的情況下為原函式增額外的功能。
簡單版裝飾器import
time
deffunc1():
print('
執行速度')
deftimmer(f):
start_time=time.time()
f()time.sleep(0.3)
end_time=time.time()
print('
此函式的執行效率%s
'% (end_time-start_time))
f1=func1
func1=timmer
func1(f1)
importtime
deftimmer1(f): #f接收的是@timmer下面原函式的函式名func1
definner():
f()start_time=time.time()
time.sleep(0.3)
end_time=time.time()
print('
此函式的執行效率%s
' % (end_time -start_time))
return
inner
@timmer1
deffunc1():
print('
測試速度')
func1()
執行結果:
測試速度
此函式的執行效率0.30037736892700195
2.被裝飾函式帶引數的裝飾器
#import time
#def timmer(f):#f=func1=inner
#def inner(*args,**kwargs):
#start_time=time.time()
#f(*args,**kwargs) #func1((*args,**kwargs))
#time.sleep(0.3)
#end_time=time.time()
#print('此函式的執行效率%s'% (end_time-start_time))
#return inner
#@timmer
#def func1(a,b,c,d): #timmer(func1)
#print(a,b,c,d)
#print('測試效率')
#func1(1,2,3,4)
3.裝飾器模版
defdef inner(*args,**kwargs):
ret=func(*args,**kwargs)
return
ret
return
inner
deffunc(a,b):
print(666)
func(1,2,3)
4.帶引數的裝飾器
importtime
def timmer(*args,**kwargs):
def
def inner(*args,**kwargs):
ifflag:
start_time=time.time()
ret=f(*args,**kwargs)
time.sleep(0.3)
end_time=time.time()
print('
此函式的執行效率%f
' %(end_time-start_time))
else
: ret=f(*args,**kwargs)
return
ret
return
inner
return
flag=true #flag=false 關掉裝飾器
@timmer(flag)
#def
func1():
print(666)
func1()
執行結果:
666此函式的執行效率0.300240
5.多個裝飾器
func=f=inner1
definner1():
print('
') #
2func()
print('
') #
3return
inner1
func=inner1=inner2
definner2():
print('
') #
1func()
print('
') #
4return
inner2
#def f():#
f=inner1
print('
in f')
f()
#f=inner1=inner2
執行結果:inf
Python 基礎學習 Day1
python是一門動態解釋性的強型別定義語言。編譯型的特點 可一致性差,執行速度快。解釋型的特點 邊執行邊解釋,速度慢 2 安裝 預設安裝路徑 c python27 3 配置環境變數 右鍵計算機 屬性 高階系統設定 高階 環境變數 在第二個內容框中找到 變數名為path 的一行,雙擊 python安...
Python基礎知識 Day 1
王濤是逗比嗎 true print 王濤是逗比嗎 執行結果 true 王濤是逗比嗎 false 可以變化的量稱之變數 print 王濤是逗比嗎 執行結果 false 王濤女神備胎的數量 100 print 王濤女神備胎的數量 執行結果 100 常量不可以被賦值,變數可以賦值 示例1num1 2 nu...
Python基礎學習筆記 Day 1
注釋 python的注釋分兩種 1 單行注釋 使用 號對文字進行注釋 例 print hello world 列印字串 hello world 2 多行注釋 使用 一對三引號對文字進行注釋 例 python是一種跨平台的計算機程式語言。是乙個高層次的結合了解釋性 編譯性 互動性和物件導向的指令碼語言...