python学习—装饰器

1.闭包的相关知识点

def func_150(val):
    passline = 90
    if val >= passline:
        print('pass')
    else:
        print('failed')
def func_100(val):
    passline = 60
    if val >= passline:
        print('pass')
    else:
        print('failed')
def set_passline(passline): #此处set_passline函数运用了闭包功能,在函数中设置一个子函数
    def cmp(val):
        if val >= passline:
            print('pass')
        else:
            print('failed')
    return cmp
f_100 = set_passline(60) #此时f_100实则是set_passline中的返回值cmp函数,有点像类的调用
f_150 = set_passline(90)
f_100(89)
f_150(89) 
pass
failed

2.闭包中引用函数、装饰器

def my_sum(*arg):
    return sum(arg)
def my_average(*arg):
    return sum(arg)/len(arg)
def dec(func):
    print('call dec')
    def in_dec(*arg):
        if len(arg) == 0:
            return 0
        for val in arg:
            if not isinstance(val,int):
                return 0
        return func(*arg)
    return in_dec
#在构造闭包函数时返回对象一定是一个函数

#my_sum = dec(my_sum)
#print(my_sum(1,2,3,4,5))
#print(my_sum(1,2,3,4,5,'6'))

#运用装饰器进行编码
@dec #此时的语法糖(@dec)一定要和之前定义的含有闭包的函数的函数名一致
def my_max(*arg):#my_max = in_dec,即是将my_max函数传入dec函数中
    return max(arg)
print(my_max(1,2,3,4,5))#此时装饰器的作用和上面调用闭包函数的代码作用是一样的,但是用装饰器更加方便简洁
call dec
5

详解可见大神博客:https://blog.csdn.net/xiangxianghehe/article/details/77170585

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值