python进阶(三)-装饰器

本文深入解析Python装饰器的概念与应用,介绍装饰器如何在不修改原函数代码的情况下为其添加额外功能,适用于日志记录、性能测试等场景。通过具体实例说明装饰器的使用方法及带参数装饰器的实现,探讨装饰器在作用域和通用性上的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值