# from functools import wraps 装饰器边边角角__name__查看被装饰原函数名地址 __doc__查看函数备注
# import time
# time.strftime('%Y-%m-%d %X')
# 作业:
# 1、编写课上讲解的有参装饰器准备明天默写
# def ato(dsa):
# def deco(func):
# def warpper(*args,**kwargs):
# account=input("请输入账号")
# pwd=input("请输入密码")
# if dsa=="file":
# print("基于文件打开")
# if account=="taoge" and pwd=="123":
# print("登陆成功")
# res=func(*args,**kwargs)
# return res
# else:
# print("登录失败")
# elif dsa=="mysql":
# print("基于数据库打开")
# return warpper
# return deco
# @ato(dsa="file")
# def long(x,y,z):
# print("到达函数{}{}{}".format(x,y,z))
# return "成功返回"
# res=long(123,456,789)
# print(res)
# 2:还记得我们用函数对象的概念,制作一个函数字典的操作吗,来来来,我们有更高大上的做法,在文件开头声明一个空字典,然后在每个函数前加上装饰器,完成自动添加到字典的操作
# dic={}
# def my_add(x):
# def my_adddic(func):
# dic[x] = func
# def warpper(*args,**kwargs):
# res=func(*args,**kwargs)
# return res
# return warpper
# return my_adddic
# @my_add("登陆者")
# def adde():
# pass
# # dic.update(name=x ,mima=y) #字典添加值得方法以 update
# @my_add("name")
# def app():
# pass
#
# adde()
# print(dic["登陆者"].__name__) #查看函数名
# app()
# print(dic["name"].__name__)
# 3、 编写日志装饰器,实现功能如:一旦函数f1执行,则将消息2017-07-21 11:12:11 f1 run写入到日志文件中,日志文件路径可以指定
# 注意:时间格式的获取
# import time
# time.strftime('%Y-%m-%d %X')
# def tail():
import time
def tail(func):
def warpper():
now_time = time.strftime('%Y-%m-%d %X') #获取当前时间
func_name = func.__name__
res=func()
jieshou=f' {now_time}{func_name} run\n' #f"{}{}记得用花括号"
with open("log.txt",mode="a",encoding="utf8")as f:
f.write(
jieshou
)
print(now_time,func_name)
return res
return warpper #注意别加括号
@tail
def indea():
print("123")
indea()
# 4、基于迭代器的方式,用while循环迭代取值字符串、列表、元组、字典、集合、文件对象
# l=[1,2,5,6,]
# res=l.__iter__()
# while True:
# try:
# print(res.__next__())
# except StopIteration: # 判断出异常退出 stopiteration
# break
# 5、自定义迭代器实现range功能
# def my_range(start,stop,step=1):
# while start<stop:
# yield start
# start+=step
# for i in my_range(1,50):
# print(i)
#
#
#
# ====================本周选做作业如下====================
# 编写小说阅读程序实现下属功能
# # 一:程序运行开始时显示
# 0 账号注册
# 1 充值功能
# 2 阅读小说
#
#
# # 二: 针对文件db.txt,内容格式为:"用户名:密码:金额",完成下述功能
# 2.1、账号注册
# 2.2、