wl 22 裝飾器函式操作及知識點

2021-10-21 20:13:53 字數 3423 閱讀 2720

print

(time.time())

# 獲取當前時間

time.sleep(10)

#讓程式在執行到這個位置的時候停一會兒~~

~~~~

~~~~

~~~~經典示例~~~

~~~~

~~~def

func()

:#被裝飾的函式

time.sleep(

0.01

)print()

deftimmer

(f):

#裝飾器函式

definner()

: start = time.time(

) f(

)#被裝飾的函式

end = time.time(

)print

(end - start)

return inner

func=timmer(func)

func()~

~~~~

~~~~

~~~~

~~~~

~~~~

~~~~

~~~~

~~~~

~~~~

~~~~

~~~~

~~~~

~~~~

~~~~

~~~~

~~~~

~~~~

~~~~

~def

timmer

(f):

#裝飾器函式

definner()

: start = time.time(

) ret = f(

)#被裝飾的函式

end = time.time(

)print

(end - start)

return ret

return inner

@timmer #語法糖 @裝飾器函式名

deffunc()

:#被裝飾的函式

time.sleep(

0.01

)print()

return

'新年好'

# func = timmer(func)

ret = func(

)#inner()

print

(ret

裝飾器的作用 —— 不想修改函式的呼叫方式 但是還想在原來的函式前後新增功能

def

timmer

(f):

#裝飾器函式

definner

(*args,

**kwargs)

: start = time.time(

) ret = f(

*args,

**kwargs)

#f(1,2) #被裝飾的函式

end = time.time(

)print

(end - start)

return ret

return inner

@timmer #語法糖 @裝飾器函式名

deffunc

(a,b)

:#被裝飾的函式

time.sleep(

0.01

)print

(,a,b)

return

'新年好'

#有沒有都是乙個結果

## @timmer #語法糖 @裝飾器函式名

deffunc1

(a):

#被裝飾的函式

time.sleep(

0.01

)print

(,a)

return

'新年好'

func = timmer(func1)

#inner()

ret = func(1,

2)#inner()

ret= func(

'r')

#inner()

print

(ret)

def(f)

:#裝飾器函式,f是被裝飾的函式

definner

(*args,

**kwargs)

:'''在被裝飾函式之前要做的事'''

ret = f(

*args,

**kwargs)

#被裝飾的函式

'''在被裝飾函式之後要做的事'''

return ret

return inner

deffunc

(a,b)

:#被裝飾的函式

time.sleep(

0.01

)print

(,a,b)

return

'新年好'

def():

definner()

:pass

return inner

def(func)

:#qqxing

definner

(*args,

**kwargs)

: ret = func(

*args,

**kwargs)

#被裝飾的函式

return ret

return inner

defqqxing()

:print

(123

)ret = qqxing(

)#inner

print

(ret)

from functools import wraps

def(func)

: @wraps(func)

definner

(*args,

**kwargs)

:'''這是乙個裝飾器函式'''

print

('在被裝飾的函式執行之前做的事'

) ret = func(

*args,

**kwargs)

print

('在被裝飾的函式執行之後做的事'

)return ret

return inner

defholiday

(day)

:'''這是乙個被裝飾的函式'''

print

('全體放假%s天'

%day)

return

'好開心'

print

(holiday.__name__)

print

(holiday.__doc__)

ret = holiday(3)

print

(ret)

wl 20 函式的巢狀操作及知識點

def max a,b return a if a b else b defthe max x,y,z 函式的巢狀呼叫 c max x,y return max c,z print the max 1,2,3 函式的巢狀定義 內部函式可以使用外部函式的變數 a 1def outer a 1def i...

python知識點(八) 函式裝飾器

一 概述 1 用於管理和增強函式和類行為的 2 提供一種在函式或類定義中插入自動執行 的機制 3 特點 更明確的語法 更高的 可維護性 更好的一致性 二 1 使用函式定義裝飾器 def p decorator func def args,kwargs return f p decorator def...

Python裝飾器知識點補充

首先回顧一下關於python裝飾器以及程式設計客棧裝飾器模式 補全根據j a實現裝飾器模式的,我們可以寫下面一段 import logging def use logging func logging.warn s is running func.name return func def foo p...