zoukankan      html  css  js  c++  java
  • python——装饰器的使用

    python装饰器的作用就是把一个函数作为参数传给另外一个参数

    import time
    def step1():
        for i in range(0,50):
            print("Step 1........")
    
    def step2():
        for i in range(0,50):
            print("Step 2........")
    
    def step3():
        for i in range(0,50):
            print("step 3 ........")
    
    def timer(func):#函数作为参数传进来
        #统计函数运行时间的装饰器
        def wrapper():
            start = time.time()
            func()
            end = time.time()
            used = end -start
            print(f'{func.__name__} used {used}')
        return wrapper
    timer(step1)()#将step作为一个参数传给timer,然后使用()调用函数,这个写法不好
    timer(step2)()
    timer(step3)()

    但是这个写法不好,可以使用@作为语法糖

    import time
    def timer(func):#函数作为参数传进来
        #统计函数运行时间的装饰器
        def wrapper():
            print("程序开始运行")
            start = time.time()
            func()
            end = time.time()
            used = end -start
            print("程序运行结束")
            print(f'{func.__name__} 耗时 {used}')
        return wrapper
    
    @timer
    #使用@符号作为语法糖,当调用step1()函数的时候,python会找到@timer,将其作为step1()函数的代理
    #python会先找timer函数,将其作为step1函数的代理
    def step1():
        for i in range(0,50):
            print("Step 1........")
    
    @timer
    def step2():
        for i in range(0,50):
            print("Step 2........")
    
    @timer
    def step3():
        for i in range(0,50):
            print("step 3 ........")
    
    step1()
    step2()
    step3()
  • 相关阅读:
    js中的setTimeout和setinterval 用法说明
    Springmvc对就jdbc封装的操作
    mybatis源码数据库链接配置
    hibernate操作mysql插入修改中文出现乱码
    jdk安装环境变量配置
    数据库理论知识
    异步提交form表单数据
    选项卡
    css3 二级菜单
    简单弹窗拖拽
  • 原文地址:https://www.cnblogs.com/shunguo/p/14540041.html
Copyright © 2011-2022 走看看