python學習day12 裝飾器高階

2022-09-13 23:45:24 字數 2328 閱讀 4263

#

裝飾器的高階

#functools.wraps

#帶引數的裝飾器

#多個裝飾器裝飾同乙個函式

#裝飾器

#開發原則 : 開放封閉原則

#裝飾器的作用 :在不改變原函式的呼叫方式的情況下,在函式的前後新增功能

#裝飾器的本質 : 閉包函式##

def inner(*args,**kwargs):

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

#ret = func(*args,**kwargs)

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

#return ret

#return inner##

#def holiday(day):

#print('全體放假%s天'%day)

#return '好開心'##

ret = holiday(3)

#print(ret)

#def outer(*args): #定義是聚合,呼叫是打散

#print(args)

#print(*args)

#def inner(*args):

#print('inner : ',args)

#inner(*args)

#outer(1,2,3,4)

#from functools import wraps##

@wraps(func)

#def inner(*args,**kwargs):

#print('之前')

#ret = func(*args,**kwargs)

#print('之後')

#return ret

#return inner##

def holiday(day):

#'''##

:param day:

#:return:

#'''

#print('放假%s天'%day)##

holiday(1)

## print(holiday.__name__) #holiday其實是指向inner

## print(holiday.__doc__) #顯示注釋

#print(holiday.__name__) #引入了函式waper就可以以原名字呼叫原函式

#print(holiday.__doc__)

#帶引數的裝飾器(就是多了乙個可以控制裝飾器的函式巢狀)

#就是控制裝飾器是否工作

#import time

#from functools import wraps

#flag = false

#def timmer_out(flag):

#def timmer(func):

#@wraps(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(flag)

#def wahaha():

#time.sleep(0.1)

#print(wahaha.__name__)##

@timmer_out(flag)

#def shuangyy():

#time.sleep(0.1)

#print(shuangyy.__name__)##

wahaha()

#shuangyy()

#多個裝飾器裝飾乙個函式##

def inner1():##

ret = func()##

return ret

#return inner1##

#def inner2():##

ret = func()##

return ret

#return inner2##

#def inner3():##

ret = func()##

return ret

#return inner3##

###def f():

#print('in f')

#return '哈哈哈'##

print(f())

python菜鳥學習Day12 裝飾器,列舉類

裝飾器 decorater 當想改變函式的功能,而不改變函式本身定義的時候,就用到了裝飾器。比如,列印函式呼叫的日誌。正常來說在函式中新增print 或者呼叫log包就行。但不想改變函式本身,就需要裝飾器來完成。裝飾器是高階函式,引數是需要列印日誌的函式,返回值也是函式。from functools...

python 學習筆記 day12 裝飾器高階

裝飾器的原則 開放封閉原則 對擴充套件是開放的,對修改是封閉的 裝飾器的作用 在不改變原函式呼叫的情況下,擴充套件被裝飾函式的功能 可以在裝飾器函式內部,在被裝飾函式的前後分別新增相應的功能 裝飾器函式的本質 裝飾器函式本質上就是乙個閉包函式 裝飾器函式固定模式 裝飾器函式 def inner ar...

day12 作業裝飾器

寫乙個裝飾器 tag要求滿足如下功能 def tag name def test func def new func args,kwargs result func args,kwargs return f return new func return test tag name p defrend...