python装饰器

import time
#装饰器
def out(func):                  #闭包函数变量
    def chag(*args,**kwargs):  #装饰部分1
        #func=date
        start=time.time()      #装饰部分1
        func(*args,**kwargs)    #被装饰对象,该值威威变量
        stop=time.time()        #装饰部分1
        print(stop-start)       #装饰部分1
    return chag                 #返回内存地址
@out #语法糖处于被装束函数的顶上方 dat=out(date)                  #将被装饰对象重新命名变量
def date(x,y):
    time.sleep(6)
    print('warting...: %s %s' %(x,y))

print(date)

date(2,3)

def op(func):
    def wrp(*args,**kwargs):
        #1、调用原函数
        #2、为其增加新功能
        name=input('name id:').strip()
        pwd=input('pawss id:').strip()
        if name=='zxt' and pwd =='110':
            print('yes,doing.....')
            res=func(*args,**kwargs)
            return res
        else:
            print('again')
    return wrp

@op
def info(inter):
    print(inter)

info('sa')


def n1(fu):#闭包
    def n2(*args,**kwargs):
#1、调用原函数,2、添加新功能
        ful=fu(*args,**kwargs)
        return ful #返回内存地址
    return n2 #返回内存地址

 

 

 

#有参装饰器:
def q3(type):
    def q2(ww):
        def q1(*args,**kwargs):
            name=input('what your name:')
            bathday=input('what your bathday:')
            if type== 'file':
                if name=='zzg' and bathday=='1010':
                    print('Welcome to the heart')
                    we = ww(*args, **kwargs)
                    return we
                else:print('sorry,erro')
            elif type=='web':
                print('web')
            elif type == 'mysql':
                print('mysql')
        return q1
    return q2
@q3(type='file')
def mm(name):
    print('my girl: %s' %name)
@q3(type='web')
def adress(ad):
    print('my home: %' %ad)
@q3(type='mysql')
def ago(ag):
    print('my old %' %ag)

mm(5)

adress(2)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值