python_慕课\python装饰器\3-1 python装饰器.py



-- 1-1 python装饰器之函数作用域   https://www.imooc.com/video/10834 

 


passline=60


def func(val):
    passline=90
    if val>passline:
        print('pass')
    else:
        print('failed')


def Max(v1,v2):
    return max(v1,v2)
func(44)
print(Max(2,33))


-- 2-1 python装饰器之闭包   https://www.imooc.com/video/10832 




def f_150(val):
    passline=90
    if val>=passline:
        print('%d pass'%val)
    else:
        print('failed')
def f_100(val):
    passline=60
    if val>=passline:
        print('%d pass'%val)
    else:
        print('failed')


def set_passline(passline):
    def cmp(val):
        if val>=passline:
            print("pass")
        else:
            print('failed')
    return cmp


f_20=set_passline(12)
f_20(13)




print(type(f_20))
print(f_20.__closure__)




#
# f_150(89)
# f_100(89)


-- 2-2 python装饰器之闭包2 https://www.imooc.com/video/10833 


def my_sum(*arg):
    print('in my_sum')
    # if  len(arg)==0:
    #     return 0
    # for val in arg:
    #     if not isinstance(val,int):
    #         return 0
    return sum(arg)
def my_average(*arg):
    # if  len(arg)==0:
    #     return 0
    # for val in arg:
    #     if not isinstance(val,int):
    #         return 0
    return sum(arg)/len(arg)




def dec(func):
    def in_dec(*arg):
        print('in dec arg=',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=in_dec(*arg)
my_sum=dec(my_sum)


print(my_sum(1,2,3,4,5))
# print(my_average(1,2,3,4,5))
# print(my_average())




-- 3-1 python装饰器   https://www.imooc.com/video/10835 




def dec(func):
    print('call dec')
    def in_dec(*arg):
        print('in dec arg=',arg )
        if len(arg) == 0:
            return 0
        for val in arg:
            if not isinstance(val, int):
                return 0
        return  func(*arg)
    print('return in_dec')
    return in_dec


# dec
def my_sum(*arg):
    print('in my_sum........')
    return sum(arg)




my_sum=dec(my_sum)
my_sum(1,23)
print(my_sum(1,23))








--
def deco(func):
    print('xxxxxxx')
    def in_deco(x,y):
        print('in deco')
        func(x,y)
    print('call deco...')
    print('yyyyyyyyyyyy')
    return in_deco




@deco
def bar(x,y):
    print('in bar ',x+y)


print(type(bar))
bar(1,2)









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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值