zoukankan      html  css  js  c++  java
  • 无参装饰器以及装饰器语法糖

    1. 什么是装饰器
    装饰器指的是为被装饰对象添加新功能的工具
    装饰器本身可以是任意可调用对象
    被装饰对象本身也可以是任意可调用对象


    2. 为何要用装饰器
    开放封闭原则:对修改封闭,对扩展开发

    装饰器的实现原则:
    1. 不能修改被装饰对象的源代码
    2. 不能修改被装饰对象的调用方式

    装饰器的目的:
    就是在遵循原则1和2的前提为被装饰对象添加新功能

    3. 如何用
    # part1
    import time

    def index():
    time.sleep(1)
    print('welcome to index page')

    def wrapper():
    start=time.time()
    func()
    stop=time.time()
    print('run time is %s' %(stop -start))

    wrapper()


    part2
    import time

    def outter(func):
    # func=最原始那个index的内存地址
    def wrapper(*args,**kwargs):
    start=time.time()
    res=func(*args,**kwargs) #最原始那个index的内存地址()
    stop=time.time()
    print('run time is %s' %(stop -start))
    return res
    return wrapper

    @outter #index=outter(index) #inex=outter(最原始那个index的内存地址) # index=wrapper的内存地址
    def index():
    time.sleep(1)
    print('welcome to index page')
    return 1234

    @outter #home=outter(home)    @加上装饰器变量名就是语法糖,如 @outter
    def home(name):
    time.sleep(1)
    print('welcome %s to home page' %name)


    res=index() #wrapper的内存地址()
    # print('返回值',res)

    home('egon')


    小练习
    import time

    def auth(func):
    # func=index
    def wrapper(*args,**kwargs):
    name=input('name>>>: ').strip()
    pwd=input('pwd>>>: ').strip()
    if name == 'egon' and pwd == '123':
    print('login successfull')
    res=func(*args,**kwargs)
    return res
    else:
    print('user or pwd error')
    return wrapper


    @auth
    def index():
    time.sleep(1)
    print('welcome to index page')
    return 1234

    index()

    无参装饰器模板
    def outter(func):
    def wrapper(*args,**kwargs):
    res=func(*args,**kwargs)
    return res
    return wrapper
  • 相关阅读:
    C Pointer-to-Function 与 C++ Pointer-to-MemberFunction 的区别
    selenium-webdriver 简单教程
    关于元素不在窗口时如何找到元素
    python-ConfigParser模块【读写配置文件】
    Python定位SVG元素
    Selenium自动化测试Python三:WebDriver进阶
    selenium之 定位以及切换frame(iframe)
    webdriver 的三种等待方式
    Selenium2+python自动化38-显式等待(WebDriverWait)
    selenium webdriver python 元素操作
  • 原文地址:https://www.cnblogs.com/huangchaonan/p/10038858.html
Copyright © 2011-2022 走看看