python为什么用装饰器,python闭包用途
这篇文章主要为大家详细介绍了计算机编程语言的闭包和装饰器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
目录
闭包装饰器总结
闭包
闭包就是能够读取其他函数内部变量的函数。
定义测试1(k,b):
def test1_1(x):
打印(k*x b)
返回测试1_1
t1=test1(1,2)
t1(0)
t1(1)
t1(2)
闭包中修改数据
x=300
定义测试1():
x=200
定义测试2():
非局部x
打印(- 1 - x={} ).格式(十))
x=100
打印(- 2 - x={} ).格式(十))
返回测试2
t1=test1()
t1()
装饰器
实现对无参数函数的装饰器
定义set_func(函数):
定义调用函数():
打印(装饰器执行)
函数()
返回调用函数
@set_func #等价于sumNum=set_func(sumNum)
def sumNum():
打印(“sumNum”)
sumNum()
实现对有参数函数的装饰器
# 对有参数、无返回值的函数进行装饰
定义set_func(函数):
定义调用函数(数字):
打印(装饰器)
函数(数字)
返回调用函数
@set_func
def sumNum(数字):
打印( sumNum={} ).格式(数字))
sumNum(100)
对不定长参数的函数进行装饰
定义set_func(函数):
def call_func(*args,**kwargs):
打印(装饰器)
func(*args,**kwargs) #拆包
返回调用函数
@set_func
def sumNum(num,*args,**kwargs):
打印( sumNum={} ).格式(数字))
打印( args={} .格式(参数))
print(kwargs={} ).格式(夸尔斯))
sumNum(100,200,c=100)
对有返回值的函数进行装饰
定义set_func(函数):
def call_func(*args,**kwargs):
打印(装饰器)
return func(*args,**kwargs) #拆包
返回调用函数
@set_func
def sumNum(num,*args,**kwargs):
打印( sumNum={} ).格式(数字))
打印( args={} .格式(参数))
print(kwargs={} ).格式(夸尔斯))
返回“200没问题”
sumNum(100,200,c=100)
多个装饰器对同一个函数装饰
def add_h1(func):
定义h1():
h1_str=h1 func() /h1
返回h1_str
返回氕
def add_a(func):
定义调用函数():
a_str=a func() /a
返回一个字符串
返回调用函数
@add_h1
@add_a
def get_str():
回哈哈
get_str()
输出为:h1a哈哈/a/h1
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注盛行信息技术软件开发工作室的更多内容!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。