python进阶(三)-装饰器

1.装饰器
1.1介绍
装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用。
在这里插入图片描述
代码遵循开放封闭原则
封闭:对实现的功能代码块
开放:对扩展开发
1.2.装饰器的使用
在这里插入图片描述
1.本来f1指向的是 f1这个对象,然后 调用ww(f1)这个函数返回的是inner这个对象,f1被重新指向 inner这个对象,f1() 就是调用inner()这个方法,func()就是调用的f1()这个方法。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1.3 装饰器带参数
其实这时候 test 指向了func_in
在这里插入图片描述

在这里插入图片描述
1.4 通用的装饰器
在这里插入图片描述
1.5 带参数的装饰器
先调用最外层的func_out()函数 然后指向 func ,然后再是 test1=func(test1),就和之前是一样的了。
在这里插入图片描述
1.6 作用域
LEGB 原则
locals -> enclosing function -> globals -> builtins
局部变量———闭包空间———全局变量———内建模块(dir(_ builtin _) )

Python 在启动的时候会自动为我们载⼊很多内建的函数、类,

例如 dict,list,type,print,这些都位于 builtin 模块中可以使用 dir(_ builtin _) 来查看。

a= 1        #    全局变量   globals
def func():
	a=2        #    闭包变量   enclosing
	def inner_fun():
		a= 3        #    局部变量    locals                                
		print("a=%d"%a)    
	return  inner_fun
ff=func()
ff()

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值