日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

4-2日装饰器,带参数的装饰器

發布時間:2023/12/2 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 4-2日装饰器,带参数的装饰器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1,函數的有用信息

from functools import wraps#引用模塊 def wrapper(f): # f = func1 @wraps(f)def inner(*args,**kwargs): #聚合#args (1,2,3)'''執行函數之前的相關操作'''ret = f(*args,**kwargs) # 打散 1,2,3'''執行函數之后的相關操作'''return retreturn inner

2,裝飾器的應用場景:比如插入日志,性能測試,事務處理,緩存等等場景。

def func1():"""此函數是什么功能,參數分別是什么作用。:return: 返回值是登錄成功與否(True,False)"""print(999)return Truefunc1() print(func1.__name__) print(func1.__doc__) def func1():"""此函數是完成什么的功能,參數分別是。。。作用。:return: 返回值是登錄成功與否(True,False)"""print(666)print(func1.__name__)print(func1.__doc__)return True func1()

3,裝飾器帶多個參數

import time def timmer(*args,**kwargs):def wrapper(f):def inner(*args,**kwargs):if flag: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 retreturn innerreturn wrapperflag = True @timmer(flag,2,3) # 兩步:1,timmer(flag) --> wrapper 2,@wrapper 裝飾器 def func1():print(666)@timmer(flag) def func2():print(777) func1() func2()

4,多個裝飾器裝飾一個參數

def wrapper1(func): # func == f函數名def inner1():print('wrapper1 ,before func') # 2 func()print('wrapper1 ,after func') # 4return inner1def wrapper2(func): # func == inner1def inner2():print('wrapper2 ,before func') # 1 func()print('wrapper2 ,after func') # 5return inner2 # @wrapper3 @wrapper2 # f = wrapper2(f) 里面的f==inner1 外面的f == inner2 @wrapper1 # f = wrapper1(f) 里面的f==函數名f 外面的f == inner1 def f(): # 3print('in f')f() # inner2()

?

Python語言函數代碼的執行流程,為了保證函數的定義先于其首次調用時執行,我們需要知道中語句的執行順序。

執行總是從程序的第一行代碼開始的,從上到下,從左到右,按順序依次執行第一條語句。

函數定義并不會改變程序的執行流程,但應該注意函數代碼塊中的語句并不是立即就執行的,而是等到函數被程序調用時才會執行。

函數調用可以看作程序執行流程中的一個迂回路徑,遇到函數調用時,并不會直接繼續執行下一條語句,而是跳到函數體的第一行,繼續執行完函數代碼塊的所有語句,再跳回到原來離開的地方。

看似比較簡單,一會你會發現,函數代碼塊中可以調用其他函數,當程序流程運行到一個函數之中時,可能需要執行其他函數中的語句。但當執行那個函數中的語句時,又可能再需要調用執行另一個函數的語句。

幸好Python對于它運行到哪里有很好的記錄,所以在每個函數執行結束之后,程序都能跳回到它離開的那個地方,直到執行到整個程序的結尾,才會結束程序。

當我們看別人的Python代碼的時候,并不總是應該一行行的按照書寫順序來閱讀,有時候,按照執行的流程來閱讀代碼,理解代碼的含義才會更好一些。

?

轉載于:https://www.cnblogs.com/yzxing/p/8692313.html

總結

以上是生活随笔為你收集整理的4-2日装饰器,带参数的装饰器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。