python基础 day12

# 作业
# FLAG=False
# def login(func):
# def inner(*args,**kwargs):
# global FLAG
# lis=[]
# if FLAG:
# ret = func(*args, **kwargs)
# return ret
# else:
# username=input('请输入用户名:')
# password=input('请输入密码:')
# with open('userlist',encoding='utf-8') as f:
# for line in f:
# lis.append(line)
# if username==lis[0].strip() and password==lis[1].strip():
# print('恭喜你登陆成功')
# FLAG=True
# ret=func(*args,**kwargs)
# return ret
# else:print('登陆失败!')
# return inner
#
#
# @login
# def shoplist_add():
# print('增加一个物品')
# @login
# def shoplist_del():
# print('删除一个物品')
#
# shoplist_add()
# shoplist_del()

# def log(func):
# def inner(*args,**kwargs):
# ret=func(*args,**kwargs)
# with open('userlist','a',encoding='utf-8') as f:
# f.write('{}\n'.format(func.__name__))
# return ret
# return inner
#
# @log
# def shoplist_add():
# print('增加一个物品')
# @log
# def shoplist_del():
# print('删除一个物品')
# shoplist_add()
# shoplist_del()
import time
FLAG=False
def time_out(flag):
    def timmer(func):
        def inner(*args,**kwargs):
            if flag:
                start=time.time()
                ret=func(*args,**kwargs)
                end=time.time()
                print(start-end)
                return ret
            else:
                ret = func(*args, **kwargs)
                return ret
        return inner
    return timmer
@time_out(FLAG)
def wahaha():
    time.sleep(0.1)
    print('whaaaaaaaa')
wahaha()

@time_out(FLAG)
def erguotou():
    time.sleep(0.1)
    print('erguotoutoutou')
erguotou()
带参数的装饰器
#多个装饰器装饰一个函数  套娃现象
def wrapper1(func): #func---->inner2
def inner1():
print('wrapper1,before func')
ret=func() #func()---->inner2()
print('wrapper1,after func')
return ret
return inner1

def wrapper2(func): #func---->f
def inner2():
print('wrapper2,before func')
ret=func() #func()----f()
print('wrapper2,after func')
return ret
return inner2

# def wrapper3(func):
# def inner3():
# print('wrapper3,before func')
# ret=func()
# print('wrapper3,after func')
# return ret
# return inner3

@wrapper1 #---->f=wrapper1(f) warpper1(f)---->inner1()
@wrapper2 #---->f=wrapper2(f) f---->inner2
# @wrapper3
def f():
print('my is f')
return '蒙了吧,哈哈哈!'
print(f())

#执行的结果:

wrapper1,before func
wrapper2,before func
my is f
wrapper2,after func
wrapper1,after func
蒙了吧,哈哈哈!

posted @ 2019-04-02 15:43  遗忘天际  阅读(126)  评论(0编辑  收藏  举报