python装饰器--原来如此简单,python装饰器原理详解
相关免费学习推荐:python视频教程
Pyhton的函数装饰器可以通过使用@方法方便地向函数添加函数。
一、功能使用
def sum_list(list):
将列表中的数字相加。
输入:带有数字的列表
list=[2,6,3,2,1]
sum_list(列表)
sum_=0
因为我在:列表中
Sum_=i返回sum_#1。将函数sum_list赋给变量list_sum,产生一个新名称function list _ sum()list _ sum=sum _ list。
List_sum([2,5,3,8,6])#2。删除函数del list_sum
List _ sum ([4,3,5,2])# name error : name list _ sum 未定义# 3。函数def sum _ (list) 3360在函数中定义。
def sum_list(列表):
将列表中的数字相加。
输入:带有数字的列表
list=[2,6,3,2,1]
sum_list(列表)
sum_=0
因为我在:列表中
sum _=I return sum _ return sum _ list(list)sum _([3,6,3,2]) # 4。将一个函数作为参数传递给另一个函数def print _ () 3360
打印(太高兴了!)print_()#以定义的函数def deco (function) 3360为参数定义一个嵌套函数。
定义包装():
打印(“此函数是嵌套的”)
函数()
返回包装
第二,函数装饰器
#1.如果嵌套函数=嵌套函数 3360,则用函数装饰符替换嵌套函数
#定义打印功能
def打印_():
打印(太高兴了!)
打印_()
#定义一个嵌套函数,参数是定义的函数。
def deco(功能):
定义包装():
打印(“此函数是嵌套的”)
函数()
包装退货
Print_2=deco(print_)#将嵌套函数的函数赋给新函数Print_2()
print _ 2()if function decorator == function decorator 3360
#或者采用装饰的方法。
def deco(功能):
定义包装():
打印(“此函数是嵌套的”)
函数()
包装退货
@deco#可以直接将函数deco()嵌套在函数print_()上,形成一个新的函数。
def打印_():
打印(太高兴了!)
Print_()#2。用一个函数装饰器装饰多个函数def print _ name (function) 3360
这个装饰函数将添加打印函数名的函数到函数
Import functools#该语句可以在函数修饰后保持函数信息不变。
@functools.wraps(函数)
def wrapped(*args,**kwargs):
*args:表示可以传入任意数量的单值对象,函数会自动以元组的形式收集它们。
* **kwargvs:表示可以传入任意数量的字典键值对,例如:value=3,函数会自动收集为字典
Print(函数的名称是%s%function。__name__)
Return (* args,* * kwargs) #执行传入参数的函数
包装退货
@ print _ name def sum _ list(list):
sum_=0
因为我在:列表中
sum_=i返回sum_
Sum _ list ([5,7,3,2])。_ _ name _ #检查后,函数名没有变化@ print _ name def small _ value(list)3360
Return min (list) small _ value ([4,8,4,2,4]) # 3。用多个函数装饰器装饰一个函数,靠近函数的装饰器会被优先执行def print _ hash (function) 3360。
这个装饰函数将把打印函数的散列值的函数添加到函数
def wrapped(*args,**kwargs):
*args:表示可以传入任意数量的单值对象,函数会自动以元组的形式收集它们。
* **kwargvs:表示可以传入任意数量的字典键值对,例如:value=3,函数会自动收集为字典
Print(函数的名称是% s %函数。__哈希_ _)
Return (* args,* * kwargs) #执行传入参数的函数
返回wrappeddef print_name(函数):
这个装饰函数将添加打印函数名的函数到函数
def wrapped(*args,**kwargs):
*args:表示可以传入任意数量的单值对象,函数会自动以元组的形式收集它们。
* **kwargvs:表示可以传入任意数量的字典键值对,例如:value=3,函数会自动收集为字典
Print(函数的名称是%s%function。__name__)
Return (* args,* * kwargs) #执行传入参数的函数
Return wrapped#将打印函数名和函数值的函数添加到functions @print_hash中
@ print _ name def small _ value(list):
返回的min(list)用类来修饰。
# Class first decorator(object): #需要引入对象。
def __init__(self,func):
自我。_ _ func=funcdef _ _ call _ _ (self,* args,* * kwargs) 3360 # _ _ call _ _方法可以让函数使用装饰。
Timeprint(执行时间:{} 。格式(time.ctime (time.time())))
自我。_ _ func (* args) @ firstdecorator #使用类的decoration def print _(* number)3360。
Print (number) print _ (5,63,8,4,6,2)大量免费学习推荐,敬请访问,python教程,(视频)以上是python的函数装饰器的详细内容。更多信息请关注热门IT软件开发工作室其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。