萬能裝飾器

2021-08-29 08:02:39 字數 1035 閱讀 5631

###萬能裝飾器

# 裝飾前的test(最先定義的test)是由func指向

# 裝飾後的test其實就是call_fun

# 裝飾器在道德上不會去更改原先函式的返回值,不會去更改原先的引數

# call_fun,func,test這三個引數一般保持一致

def set_fun(func):

def call_fun(*args,**kwargs):

print("--->args",args)

print("--->kwargs",kwargs)

return func(*args,**kwargs) # 拆包

return call_fun

@set_fun # fun1 = set_fun(fun1)

def fun1(*args, **kwargs):

print(args)

print(kwargs)

return 100

print(fun1())

print(fun1(123,456))

print(fun1(123, 456, a=1, b=2))

###裝飾器傳參

# 三個函式的巢狀,最外層(第三層必須返回閉包的引用),最外層必須的引數

def set_value(value):

print(value)

def set_fun(func):

def call_fun():

print("許可權認證")

func() # 這個就是原先的函式

return call_fun

return set_fun

# 這個分成兩步

# 第一步:set_value("吃飯"),得到閉包的的引用

# 第二步:@閉包的引用 @set_fun ===> test=set_fun(test)

@set_value("吃 飯")

def fun1():

print("test")

裝飾器 萬能傳參

案例 一 環境 以上為線上 需要新增1個統計執行時間的功能。線上 如下 1 usr bin env python2 coding utf8 3 author dong ye45 import time67 8def test1 9 time.sleep 3 10print in the test1 ...

裝飾器的幾種形式 萬能裝飾器

1.無參無返回值 def setfunc func def print start func print end setfunc defshow print show show 在不改變原函式呼叫釋放下 新增了功能 start show end2.無參有返回值 def setfunc func de...

萬能密碼 php,PHP萬能密碼

說實話如果乙個 的前台都是注入漏洞,那麼憑經驗,萬能密碼進後台的機率基本上是百分之百。可是有的人說對php的站如果是gpc魔術轉換開啟,就會對特殊符號轉義,就徹底杜絕了php注入。其實說這話的人沒有好好想過,更沒有嘗試過用萬能密碼進php的後台。其實gpc魔術轉換是否開啟對用萬能密碼進後台一點影響也...