python为什么用装饰器,python闭包用途

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: