生活随笔
收集整理的這篇文章主要介紹了
工具--装饰器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
裝飾器
1.函數名
2.函數執行時間
import time
from print_log
import print_log
def function_info(original_fuction
):"""無配置,有包裝:return:"""def decorator_fuction(*args
, **kwargs
):function_name
= original_fuction
.__name__print_log
('INFO', 'function:{0} start '.format(function_name
))start_time
= time
.time
()result
= original_fuction
(*args
, **kwargs
)end_time
= time
.time
()exe_time
= end_time
- start_timeprint_log
('INFO', 'function:{0} end '.format(function_name
))print_log
('INFO', 'function:{0} exe time is {1}(s)'.format(original_fuction
.__name__
, exe_time
))return result
return decorator_fuction
def decoration_sample_step_0(decorator_fuction
):"""無入參,無包裝:return:"""def do_something(_fuction
):print_log
('DEBUG', 'now executing function is :{0}'.format(_fuction
.__name__
))setattr(_fuction
, 'function_type', 'sample')print_log
('DEBUG', 'now executing function type is :{0}'.format(_fuction
.function_type
))passdo_something
(decorator_fuction
)return decorator_fuction
def decoration_sample_step_1(original_function
):"""無入參,有包裝:return:"""def decorator_fuction():start_time
= time
.time
()result
= original_function
()end_time
= time
.time
()exe_time
= end_time
- start_timeprint_log
('DEBUG', 'function {0} exe_time is {1}(s)'.format(original_function
.__name__
, exe_time
))return result
return decorator_fuction
def decoration_sample_step_2(original_function
):"""有函數入參,無裝飾器入參,無包裝:return:"""def decorator_fuction(*args
, **kwargs
):result
= original_function
(*args
, **kwargs
)print_log
('INFO', '有函數入參,無裝飾器入參,無包裝')return decorator_fuction
def decoration_sample_step_3(input_parameter
):"""有裝飾器入參,有函數入參:return:"""def decorator_fuction_1(func
):def decorator_fuction_2(*args
, **kwargs
):if input_parameter
== 1:print("----權限級別1,驗證----")elif input_parameter
== 2:print("----權限級別2,驗證----")return func
(*args
, **kwargs
)return decorator_fuction_2
return decorator_fuction_1
def set_level(level_num
):"""有裝飾器入參,有函數入參,無包裝"""def set_func(func
):def call_func(*args
, **kwargs
):if level_num
== 1:print("----權限級別1,驗證----")elif level_num
== 2:print("----權限級別2,驗證----")return func
(*args
, **kwargs
)return call_func
return set_func@decoration_sample_step_3
(2)
def test_original(a
):"""測試函數"""print_log
('INFO', a
)print_log
('INFO', 'this is only one test original function')return 'success', 'hello world'def main():result
= test_original
('wow')print_log
('INFO', 'result is {0}'.format(result
))if __name__
== '__main__':main
()
總結
以上是生活随笔為你收集整理的工具--装饰器的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。