day12
#复习 # def wapper(func): # def inner(*args,**kwargs):#接受聚合 # set=func(*args,**kwargs)#调用打散#set=func()为接受返回值,不接受返回值 # return set # return inner # # @wapper # def holiday(a): # ''' # 假的, # 都是假的, # ''' # print('放假%s天'%a) # return"happy!" # set=holiday(4)#inner的返回值,用ret接收 # print(set) #生成器函数 #普通函数 # def generator(): # print(1) # return "a" # set=generator() # print(set) #生成器函数 :含有yield的函数(不与return共用,需要写在函数内部) # def generator(): # print(1) # yield "a" # print(2) # yield"b" # yield'c' # #生成器函数执行之后,生成一个生成器作为返回值 # set=generator()#执行后获获得一个生成器 # print(set) # print(set.__next__())#执行后获得返回值,然后打印出来 # print(set.__next__()) # print(set.__next__()) # #类似for循环 #迭代器函数 # def generator(): # for i in range(20): # yield "wahaha%s"%i # g=generator()#上面是生成器,加上下面就转化成迭代器 # count=0 # for i in g: # print(i) # count +=1 # if count >5: # break # # print("@@@",g.__next__())#执行下一个,不是从头开始 # # for i in g:#接着上一个for循环继续 # print(i) # count +=1 # if count >7: # break #文件监听 # def generator(filename): # f=open(filename,encoding='utf-8') # while 1: # line=f.readline() # if line: # yield '*****',line.strip() # generator('file') # # f=open('file',encoding='utf-8') # while 1: # line=f.readline() # if line: # print(line) # def generator(filename): # f=open(filename,encoding='utf-8') # while 1: # line=f.readline() # if line.strip(): # yield line.strip() # g=generator('file') # for i in g: # if 'python' in i: # print('****', 'python') # # def holiday(a): # ''' # 假的, # 都是假的, # ''' # print(holiday.__name__) # print(holiday.__doc__)#查看函数注释 # def wapper(func): # def inner(*args,**kwargs):#接受聚合 # '''假的,都是假的''' # set=func(*args,**kwargs)#调用打散#set=func()为接受返回值,不接受返回值 # return set # return inner # # @wapper # def holiday(a): # print('放假%s天'%a) # return"happy!" # # print(holiday.__name__) # print(holiday.__doc__)#inner的注释 # set=holiday(4)#inner的返回值,用ret接收 # print(set) #带参数的装饰器 # import time # flag=False # def time_out(flag): # def timmer(func): # def inner(*args,**kwargs): # if flag==True:#true则执行 # start = time.time() # set=func(*args,**kwargs) # end =time,time() # print(end-start) # return set # else:#否则执行这个 # set = func(*args, **kwargs) # return set # return inner # return timmer # # @time_out(flag) # def run(): # time.sleep(0.1) # print('sjkaj') # # @time_out(flag) # def walk(): # time.sleep(0.1) # print('jdskdaj') # # run() # walk() #多个装饰器装饰一个函数 # def wrapper1(func): # def inner1(): # print('wrapper1 ,before func') # func() # print('wrapper1 ,after func') # return inner1 # # def wrapper2(func): # def inner(): # print('wrapper2 ,before func') # func() # print('wrapper2 ,after func') # return inner # # @wrapper2 #inner1 # @wrapper1 #func # def f(): # print('in f') # # f() # # 结果# wrapper2 ,before func # # wrapper1 ,before func # # in f # # wrapper1 ,after func # # wrapper2 ,after func #记录用户登陆情况和时间 # def wrapper1(func): # def inner1(): # username=input('please input your name:') # password=input('please input your password:') # if username=='bts' and password=='130613': # func() # print('sucessful!') # else: # print('fail!') # return inner1 # # import time # def wrapper2(func): # def inner(): # func() # print(time.time()) # return inner # # @wrapper2 #inner1 # @wrapper1 #func # def f(): # print('登陆记录') # # f()
#作业 #1实行一次登陆,以后无需再次登陆 # flag=False#全局变量 # def login(func): # def inner(*args,**kwargs): # global flag#改变全局变量flag,实行一次登陆,以后无需再次登陆 # if flag:#如果flag为true,直接运行修饰器函数 # set = func(*args, **kwargs) # return set # else: # id=input("please input your id") # password=input('please input your password') # if id=='bts' and password=='130613': # flag=True#登陆成功,改全局变量为true,实现再次登陆直接运行if flag(true): # set = func(*args, **kwargs) # return set # else: # print('password or id is wrong') # return inner # # @login # def shoplist_add(): # print('add one good') # # @login # def shoplist_del(): # print('delete one good') # shoplist_add()#登陆成功 # shoplist_del()#无需再次登陆 # shoplist_del()#无需再次登陆 #修改一次购物车,登陆一次 # def login(func): # def inner(*args,**kwargs): # id=input("please input your id") # password=input('please input your password') # if id=='bts' and password=='130613': # set = func(*args, **kwargs) # return set # else: # print('password or id is wrong') # return inner # # @login # def shoplist_add(): # print('add one good') # # @login # def shoplist_del(): # print('delete one good') # shoplist_add()#登陆成功,运行 # shoplist_del()#再次登陆,然后运行 #2记录操作过程 # def log(func): # def inner(*args,**kwargs): # with open('file','a',encoding='utf-8') as f: # f.write(func.__name__+'\n')#双下划线__ # set = func(*args, **kwargs) # return set # return inner # @log # def shoplist_add(): # print('add one good') # # @log # def shoplist_del(): # print('delete one good') # # shoplist_del() # shoplist_add() #进阶作业 # import os # from urllib.request import urlopen # def cache(func): # def inner(*args,**kwargs): # if os.path.getsize('file'): # with open('file','rb')as f: # return f.read() # set=func(*args,**kwargs) # with open('file','wb')as f: # f.write(set) # return set # return inner # # @cache # def get(url): # code=urlopen(url).read() # return code # # set=get('https://hao.360.cn/?a1004') # print(set)