- 裝飾器
創(chuàng)建裝飾器, 要求如下:
創(chuàng)建add_log裝飾器殴泰, 被裝飾的函數(shù)打印日志信息凤类;
日志格式為: [字符串時間] 函數(shù)名: xxx, 運行時間:xxx, 運行返回值結果:xxx
裝飾器需求:獲取每個函數(shù)的執(zhí)行時間
1.函數(shù)執(zhí)行之前計算時間
2.函數(shù)執(zhí)行之后計算時間
問題1:被裝飾的函數(shù)有返回值的時候怎么辦瓮孙?
問題2:如何保留被裝飾函數(shù)的函數(shù)名和幫助文檔信息
我們分析原因:修改如下
創(chuàng)建裝飾器, 要求如下:創(chuàng)建add_log裝飾器选脊, 被裝飾的函數(shù)打印日志信息杭抠;日志格式為: [字符串時間] 函數(shù)名: xxx, 運行時間:xxx, 運行返回值結果:xxx
需求:用戶登陸驗證的裝飾器 is_login
如果用戶登陸成功恳啥,則執(zhí)行被裝飾的函數(shù)
如果用戶登陸不成功偏灿,則執(zhí)行登陸函數(shù)
編寫裝飾器required_ints, 條件如下:
確保函數(shù)接收到的每一個參數(shù)都是整數(shù);
如果參數(shù)不是整形數(shù), 打印 TypeError:參數(shù)必須為整形
編寫裝飾器required_types, 條件如下:
1). 當裝飾器為@required_types(int,float)確保函數(shù)接收到的每一個參數(shù)都是int或者float類型;
2). 當裝飾器為@required_types(list)確保函數(shù)接收到的每一個參數(shù)都是list類型;
3). 當裝飾器為@required_types(str,int)確保函數(shù)接收到的每一個參數(shù)都是str或者int類型;
4). 如果參數(shù)不滿足條件钝的, 打印 TypeError:參數(shù)必須為xxxx類型
多個裝飾器的順序,從下到上調(diào)用裝飾器
多個裝飾器的應用
判斷是否為系統(tǒng)用戶,如果是root用戶可以添加用戶