python菜鸟学习: 11. 装饰器的基础用法

2022/8/25 1:22:59

本文主要是介绍python菜鸟学习: 11. 装饰器的基础用法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

# -*- coding: utf-8 -*-
# decorator
# 定义:本质是函数,就是为其他函数添加附件功能
# 原则:
# 1.不能修改被装饰的函数的源代码
# 2.不能修改被装饰的函数的调用方式
# 实现装饰器
# 1.函数既变量
# 2.高阶函数
# 3.嵌套函数
# 高阶甘薯+嵌套函数--->装饰器
import time


# 计算函数运行时间装饰器:参数中包含函数
def countTime(func):
    start_Time = time.time()
    func()
    end_Time = time.time()
    print("then func run time is %s" % (end_Time - start_Time))
    # return func  # 返回func的内存地址


# 调用装饰器countTime
@countTime
def bar():
    print("this is bar")
    time.sleep(2)


# # 在bar中增加时间打印,从而在内存地址中覆盖原来的bar函数地址,并且原来的bar函数不变
# bar = countTime(bar)
# bar()


####高阶函数+嵌套函数####
def timer(func):
    def countTime(*args, **kwargs):
        start_Time = time.time()
        func(*args, **kwargs)
        end_Time = time.time()
        print("then func run time is %s" % (end_Time - start_Time))

    return countTime  # 返回func的内存地址


@timer  # timer(test1)
def test1():
    time.sleep(3)
    print("this is test1")


@timer
def test2(*args, **kwargs):
    time.sleep(4)
    print("test2 vlues :%s %s" % (str(*args), dict(**kwargs)))


test1()
test2("liyuzhou")


这篇关于python菜鸟学习: 11. 装饰器的基础用法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程