python装饰器

  • 闭包
    闭包: 1.函数内嵌函数,
    2. 返回值为一个函数 和函数需要用到的变量,
    3. 被函数记住的封闭作用域 包括函数 和变量x
def func1(x):
    def inner():
		print (x) 
	return inner
ss = func1(4)
ss()
**************结果**************
4
  • 装饰器
    装饰器其实就是一个闭包,把一个函数当做参数然后返回一个替代版函数
*****************定义****************
def zsq(func):
	def inner():
	    print("-"* 30)
	    func()
	return inner

*****************使用********************
@zsq
def sent():
	print('sent')
sent()
*****************结果********************
------------------------------
sent

  • 函数参数 带参数 带返回值
def zsq(func):
        def inner(*args, **kwargs):
            print("-"* 30)
            res = func(*args, **kwargs)
            return res
        return inner

@zsq
def sent(a,b):
	print('sent')
	print(a,b)
sent(1,2)

**************结果**********
------------------------------
sent
1 2
  • 带参数的装饰器
'''
直接用把参数放入装饰器是不行的 ,装饰器有固定格式,
解决办法,首先封装一个装饰器,
然后通过闭包,把需要的参数和装饰器打包在一起,返回装饰器。装饰器在调用函数和传入的变量
'''
def getzsq(char):
    def zsq(func):
        def inner(*args, **kwargs):
            print(char * 30)
            res = func(*args, **kwargs)
            return res
        return inner
    return zsq


@getzsq("-")  # func= zsq(func)
def func():
    print("sent")
    print("k")
    return 5
ss = func()
print(ss)
**************结果**********
------------------------------
sent
k
5
 - 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值