zoukankan      html  css  js  c++  java
  • Python基础之装饰器

    测码学院

    1、装饰器本质是一个高阶函数。接收一个函数作为参数,并且返回一个函数的高阶函数。示例:def decorator(func): def wrapper(): python 代码 func() python 代码 return wrapper

    2、通过__name__ 属性来获取;

    测码学院,Python培训课程

    3、通过getattr(func,'__name__')来获取。

    测码学院,Python培训课程

    4、计算sayHello()方法运行的时间。import timedef calculateTime(func): def wrapper(): starttime=time.time() func() endtime=time.time() print '运行的时间:',endtime-starttime return wrapperimport time@calculateTimedef sayHello(): time.sleep(5) print 'hello'sayHello()

    测码学院,Python培训课程

    5、在这里说明下 :@calculateTime 置于方法定义之前,类似于 执行sayHello=calculateTime(sayHello) 这串代码。定义函数:import timedef sayHello(): time.sleep(5) print 'hello'装载函数:sayHello=calculateTime(sayHello)调用函数:sayHello()那么现在sayHello对象指向的就是calculateTime返回的wrapper函数,所以调用sayHello的时候,直接调用wrapper函数。这种调用方法和上面使用@调用方法结果一样。

    测码学院,Python培训课程

    6、在运行Add()前后打印日志。def calculateDigit(func): def wrapper(*args,**kw): print '计算开始' func(*args,**kw) print '计算结束' return wrapper@calculateDigitdef add(*args,**kw): sum=0 for x in args: sum=sum+x print sum

    测码学院,Python培训课程

    7、说明:*args:普通的参数**kw :关键字参数,字典类型。

    8、如果装饰器本身需要传进参数,那么需要编写一个返回装饰器的高阶函数。def returnDecorator(text): def decorator(func): def wrapper(*args,**kv): print text func(*args,**kv) return wrapper return decorator@returnDecorator('hello parameter')def add(name): print name说明:@returnDecorator('hello parameter') 返回的是decorator装饰器。然后将add作为参数传给decorator,就和前面的过程一样。

    测码学院,Python培训课程

    更多关于python自动化测试学习资料可加博主qq:1993712276,或者去测码学院官网查看

  • 相关阅读:
    期末总结
    作业01 第一次作业 入门
    C语言I博客作业09
    C语言I博客作业08
    C语言I博客作业07
    C语言I博客作业06
    C语言|博客作业05
    通过Excel批量导入数据-Java代码
    python3-easygui模块安装
    com.alibaba.fastjson.JSONArray cannot be cast to XX
  • 原文地址:https://www.cnblogs.com/cema/p/13166566.html
Copyright © 2011-2022 走看看