python中装饰器的调用及带参数的装饰器

本文详细探讨了Python装饰器的定义、调用方式以及如何处理带有参数、关键字参数和返回值的原函数。同时,介绍了如何保留被装饰函数的元信息,并讲解了带参数的装饰器和多个装饰器的使用。最后,提供了一个练习,指导读者创建打印函数日志信息的装饰器。
摘要由CSDN通过智能技术生成

1 装饰器的定义

1.把一个函数当作参数,返回一个替代版的函数,本质上就是一个返回函数的函数
2.可以在不改变原函数的基础上,给函数增加功能。

示例:增加原函数的功能
在这里插入图片描述
在这里插入图片描述


def decorate(fun):
    def wrapper(*args,**kwargs):
        print('Welcome to 2020')
        fun()
    return wrapper
    
@decorate
def fun():
    print('Hello python!')
    
fun()

在这里插入图片描述
注意:decorate是用于返回wrapper(不带()表示返回函数,带()表示返回运行结果)


2 装饰器的调用方式

示例:计算函数f1的运行时间

import time

def decorator(fun):
    def wrapper():
        print(time.time())
        fun()
    return wrapper
    
def f1():
    print('This is a function')
    
f = decorator(f1)##调用函数
f()

在这里插入图片描述


import time

def decorator(fun):
    def wrapper():
        print(time.time())
        fun()
    return wrapper
    
@decorator ###调用装饰器(写在原函数前面)

def f1():
    print('This is a function')
    
f1()

在这里插入图片描述


3 处理的原函数中有参数

注意:会先运行装饰器,再运行原函数
示例:计算函数f1的运行时间

def decorator(func):
    def wrapper(*args):
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值