python装饰器的详细介绍

1.0装饰器
装饰器:本质是函数,(装饰其他函数),就是为其他函数添加附加功能
应用:当多个函数要增加一个功能时,由于函数过多,当函数正在运行时又无法修改原函数代码,所有装饰器就起到作用了
原则:1不能修改被装饰的函数的源代码
2不能修改被装饰的函数的调用方式
实现装饰器知识储备:
函数即变量
高阶函数
嵌套函数 高阶函数+嵌套函数=》装饰器
例子
#-- coding:utf-8 --

import time
#timeer就是装饰器,同时也是一个函数
def timeer(func):
def warrper():
start_time=time.time()
func()
stop_time=time.time()
print(“the func run time is %s” % (stop_time-start_time))
return warrper

@timeer #调用装饰器 只有下面调用被装饰函数时才调用,也就是下面调用test()
def test1():
time.sleep(3)
return (‘in the test1’)

test1() 正常执行,但是不返回任何东西,就是return不返回出来

上面是其实是简写,调用方便,下面就是它原本的意思,正常是使用上面的简写,比较方便

import time

def test1():
time.sleep(3)
print(‘this is test1’)

def dec(func):
def deo():
start_time=time.time()
func()
stop_time=time.time()
print(’%s run tiem is %s’ % (func,stop_time-start_time))
return deo()

test1=dec(test1) # @dec(test1) 就是相当于这一步

如果函数要加参数
import time

def dec(func):
def deo(*args): #给deo赋值,让它可以接受任意参数
start_time=time.time()
func(*args)
stop_time=time.time()
print(’%s run tiem is %s’ % (func,stop_time-start_time))
return deo #返回的是deo,其实deo就是重新赋值的test1 我们要给test1赋值就是给deo赋值,看上面

@dec
def test1(name,age):
time.sleep(3)
print(name,age)
print(‘this is test1’)

test1(‘wyq’,22)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值