python之无参装饰器

本文介绍了Python中无参装饰器的概念,强调了装饰器在不修改原代码的情况下为函数添加附加功能的重要性。文章首先回顾了*args, **kwargs, 名称空间与作用域,以及函数对象等预备知识。接着,详细探讨了装饰器的定义、作用以及使用装饰器的原因,遵循开放封闭原则。通过多个示例方案,阐述了如何在不修改被装饰函数源代码和调用方式的同时,实现添加如统计运行时间等功能。最后,讨论了装饰器的不同优化方案,包括处理带参数的函数和通用化装饰器的设计,以及Python的语法糖特性。" 112686616,9346236,CSS入门指南:选择器、美化与布局技巧,"['CSS', '前端开发', '网页设计', '样式表', '网页美化']
摘要由CSDN通过智能技术生成

在讲装饰器之前,要知道以下知识点
一、储备知识点
1.*args,**kwargs

def index(x,y):
	print(x,y)

def wrapper(*args,**kwargs):
	index(*args,**kwargs) #index(y = 222,x = 111)
wrapper(y = 222, x = 111)

2.名称空间与作用域:名称空间的‘嵌套’关系是在函数定义阶段,即检测语法的时候确定的。

3.函数对象
可以把函数当做参数传入
可以把行数当做返回值返回

def index():
	pass
def foo(func):
	return func
foo(index)
#不要加括号,加括号是先运行了inndex了,不要加括号!不加括号代表的是传的是函数

4.函数的嵌套定义

def outter(func):
	def wrapper():
		pass
	return wrapper

闭包函数

def outter():
	x = 111
	def wrapper():
		x
	return wrapper #重新回到全局

f =outter()

传参的方式一:通过参数的形式为函数体传值

def wrapper():
	print(1)
	print(2)
	print(3)
	x

传参的方式二:通过闭包的函数体传值

1.
def outter(x):
	#x=1
	def wrapper():
		print(1)
		print(2)
		print(3)
		x
	return wrapper
	#return outter内的wrapper那个函数的内存地址

f1 = outter(1)
f2 = outter
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值