美文网首页
python之装饰器

python之装饰器

作者: ivan_cq | 来源:发表于2018-09-14 18:45 被阅读0次
    • 装饰器

    创建装饰器, 要求如下:
    创建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用户可以添加用户



    相关文章

      网友评论

          本文标题:python之装饰器

          本文链接:https://www.haomeiwen.com/subject/wctbgftx.html