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()
  • 相关阅读:
    Linux sed命令
    Linux之read命令使用
    Linux shell之数组
    Linux Shell脚本攻略:shell中各种括号()、(())、[]、[[]]、{}的作用
    shell中的${},##, %% , :- ,:+, ? 的使用
    hostname命令
    进度条的制作-python
    33 Python 详解命令解析
    Python 学习笔记 多进程 multiprocessing--转载
    Spring注解(生命周期)
  • 原文地址:https://www.cnblogs.com/shunguo/p/14540041.html
Copyright © 2011-2022 走看看