码迷,mamicode.com
首页 > 编程语言 > 详细

python 装饰器

时间:2018-04-05 22:30:07      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:多个   log   inner   you   body   rgs   pytho   参数   where   

#装饰器:函数
# 1.将装饰器下面的源函数作为参数传入装饰器函数,执行装饰器函数
# 2.将装饰器函数的返回值赋值给源函数,此时源函数的指向改变为内存中装饰器函数返回值的函数(组成了新函数)
# 3.执行新组成的函数
# 只要函数应用装饰器,那么函数就被重新定义为装饰器的内层函数
def decra(func):
def inner():
print("where are you?")
r = func()
print("oh,I see!")
return inner

@decra
def f1():
print("I am here")

f1()#执行过程为f1=decra(f1())=inner,则f1() = inner()

##如果要接收多参数
def uuu(func):
def inu(*arg,**kwargs):
print("before")
r = func(*arg,**kwargs)
print(r)
print("end")
return inu

@uuu
def f2(x,y):
print("我是主角")
return x+y

@uuu
def f3(x,y,z):
print("我才是")
return x+y+z

f2(1,2)
f3(1,2,3)

#一个函数可以应用多个装饰器,从函数开始由内往外(由下往上)解释,执行从外往里(由上到下)执行

python 装饰器

标签:多个   log   inner   you   body   rgs   pytho   参数   where   

原文地址:https://www.cnblogs.com/wuxinyan/p/8724519.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!