- 装饰器
创建装饰器, 要求如下:
创建add_log装饰器, 被装饰的函数打印日志信息;
日志格式为: [字符串时间] 函数名: xxx, 运行时间:xxx, 运行返回值结果:xxx
map函数和匿名函数,map函数传入的第一个参数为函数,第二个参数是一个序列
装饰器需求:获取每个函数的执行时间
1.函数执行之前计算时间
2.函数执行之后计算时间
问题1:被装饰的函数有返回值的时候怎么办?
问题2:如何保留被装饰函数的函数名和帮助文档信息
被装饰的函数为有返回值的函数
打印这两个有返回值的函数,结果为none
我们分析原因:修改如下
完整版本
打印帮助文档
当没有调用那个模块显示的是装饰函数的信息
打印一个函数就是打印一个函数的返回值
创建装饰器, 要求如下:创建add_log装饰器, 被装饰的函数打印日志信息;日志格式为: [字符串时间] 函数名: xxx, 运行时间:xxx, 运行返回值结果:xxx
可以查看函数的日志
需求:用户登陆验证的装饰器 is_login
如果用户登陆成功,则执行被装饰的函数
如果用户登陆不成功,则执行登陆函数
编写装饰器required_ints, 条件如下:
确保函数接收到的每一个参数都是整数;
如果参数不是整形数, 打印 TypeError:参数必须为整形
通过isinstance方法判断一个数的类型
编写装饰器required_types, 条件如下:
1). 当装饰器为@required_types(int,float)确保函数接收到的每一个参数都是int或者float类型;
2). 当装饰器为@required_types(list)确保函数接收到的每一个参数都是list类型;
3). 当装饰器为@required_types(str,int)确保函数接收到的每一个参数都是str或者int类型;
4). 如果参数不满足条件, 打印 TypeError:参数必须为xxxx类型
多个装饰器的顺序,从下到上调用装饰器
多个装饰器的应用
判断是否为系统用户,如果是root用户可以添加用户
网友评论