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,或者去测码学院官网查看

  • 相关阅读:
    JavaScript打开新窗口被拦截问题
    FileReader读取本地文件
    JS实现数组去重的6种方法总结
    cssReset
    鼠标拖拽定位和DOM各种尺寸详解
    关于前端本地压缩图片,兼容IOS/Android/PC且自动按需加载文件之lrz.bundle.js
    AJAX的get和post请求原生编写方法
    Grunt的配置和使用
    浏览器的工作流程
    Python基础——函数的迭代器和生成器
  • 原文地址:https://www.cnblogs.com/cema/p/13166566.html
Copyright © 2011-2022 走看看