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)

  

posted @ 2018-12-15 16:50  菜菜会回来改名字的  阅读(123)  评论(0编辑  收藏  举报