Python基礎 裝飾器(Day11)

2022-09-14 01:03:18 字數 2518 閱讀 5832

裝飾器

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)

import

time

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.裝飾器模版

def

def inner(*args,**kwargs):

ret=func(*args,**kwargs)

return

ret

return

inner

deffunc(a,b):

print(666)

func(1,2,3)

4.帶引數的裝飾器

import

time

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是一種跨平台的計算機程式語言。是乙個高層次的結合了解釋性 編譯性 互動性和物件導向的指令碼語言...