python 帶返回值的裝飾器

2021-09-26 21:21:23 字數 1634 閱讀 6395

》基本裝飾器沒有引數沒有返回值

》當功能函式有返回值的情況下

解決返回值的問題

import time

# 裝飾器函式

def cont_time(func):

"""統計時間的裝飾器"""

def inner():

start_time = time.time()

print('計時開始。。。')

func()

end_time = time.time()

print('計時結束,總共耗時秒'.format(end_time - start_time))

return inner

# 功能函式

@cont_time # 相當於 do_work = cont_time(do_word)

def do_work():

"""有耗時的函式"""

print('do_work開始')

time.sleep(1)

print('do_work結束')

return 'work is done' # !返回值需要傳遞

res = do_work()

print(res)

結果

c:\users\python_hui\anaconda3\python.exe g:/test/a/1.py

計時開始。。。

do_work開始

do_work結束

計時結束,總共耗時1.01秒

none

process finished with exit code 0

import time

# 裝飾器函式

def cont_time(func):

"""統計時間的裝飾器"""

def inner():

start_time = time.time()

print('計時開始。。。')

res = func() # !這裡接收

end_time = time.time()

print('計時結束,總共耗時秒'.format(end_time - start_time))

return res # !這裡返回

return inner

# 功能函式

@cont_time # 相當於 do_work = cont_time(do_word)

def do_work():

"""有耗時的函式"""

print('do_work開始')

time.sleep(1)

print('do_work結束')

return 'work is done' # 返回值需要傳遞

res = do_work()

print(res)

結果,拿到返回值了

c:\users\python_hui\anaconda3\python.exe g:/test/a/1.py

計時開始。。。

do_work開始

do_work結束

計時結束,總共耗時1.00秒

work is done

process finished with exit code 0

秒懂裝飾器(帶傳參和返回值)

coding utf 8 import time 傳入的引數為func,即函式名 函式的位址 不是func 若是func 即把函式的執行結果傳入了timer deftimer func 將函式名傳遞給另乙個函式作為引數,稱之為高階函式 defdeco args,kargs 在函式內定義乙個函式,稱之...

C lambda查詢帶返回值

具體如下 var lists new list foreach var item in lists.where x x.length 2 如果願意,完全可以使用action進行輸入上述的item,而不是在foreach中加一層判斷。問題簡單描述就是 簡單來說就是直接在where中輸出長度大於2的字元...

帶返回值的介面寫法

假定介面需要返回乙個指標,且可能涉及某些條件判斷,不一定能獲取到有效指標,大部分人寫法如下 根據條件判斷是否返回有效值 pointer getptr void 之後為了 嚴謹,會有以下操作 pointer pptr getptr if pptr nullptr 很多地方呼叫getptr介面的話,到處...