案例一:
请实现一个装饰器,每次调用函数时,将函数名字以及调用此函数的时间点写入文件中
代码部分:
import time
time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
# 有参装饰器
def decorator(time):
def func_wrapper(func):
def wrapper():
func()
with open("Demo3.text", "a+",encoding="utf-8") as f:
f.write(f"函数名:{func.__name__} ---- 执行时间:{time} \n")
return wrapper
return func_wrapper
# 有参类装饰器
class class_decorator():
def __init__(self,time):
self.time = time
def __call__(self, func):
def wrapper():
func()
with open("Demo3.text", "a+", encoding="utf-8") as f:
f.write(f"函数名:{func.__name__} ---- 执行时间:{self.time} \n")
return wrapper
# @class_decorator(time) # 有参类装饰器
@decorator(time) # 有参装饰器
def hey():
print("Hello World!" + "--------" + time)
# @class_decorator(time) # 有参类装饰器
@decorator(time) # 有参装饰器
def bye():
print("Bye World!" + "--------" + time)
hey()
bye()
运行结果:
案例二:
完成文件写入功能,任意写入一个字符,编写装饰器,实现写入文件时增加当前系统时间
代码部分:
import time
time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
# 有参装饰器
def decorator(time):
def func(func):
def wrapper(*args, **kwargs):
func(*args, **kwargs)
with open("Demo4.text", "a+", encoding="utf-8") as f:
f.write(time + "\n")
return wrapper
return func
# 有参类装饰器
class class_decorator():
def __init__(self, time):
self.time = time
def __call__(self, func):
def wrapper(*args, **kwargs):
func(*args, **kwargs)
with open("Demo4.text", "a+", encoding="utf-8") as f:
f.write(time + "\n")
return wrapper
# @decorator(time) # 有参装饰器
@class_decorator(time)
def fileWrite(str):
with open("Demo4.text", "a+", encoding="utf-8") as f:
f.write(str + "---------")
s = input()
fileWrite(s)
运行结果:
案例三:
使用with语法完成文件的复制
代码部分:
with open("Demo5_copy.txt", "w+", encoding="utf-8") as f, open("Demo5.text", "r", encoding="utf-8") as r:
f.write(r.read())
print(f"已完成文件的复制:复制文件名 {r.name} , 复制后文件名 {f.name} ")
运行结果:
案例四:
完成登录系统,登录时数据使用序列化和反序列化
代码部分:
import pickle
class Person():
def __init__(self, name, passwd):
self.name = name
self.passwd = passwd
def dump(self):
user = {'name': self.name, 'passwd': self.passwd}
return pickle.dumps(user)
users = []
Person1 = Person("obboda", "ob123456") # 用户1
users.append(Person1)
Person2 = Person("zhangsan", "zs123456") # 用户2
users.append(Person2)
Person3 = Person("lisi", "ls123456") # 用户3
users.append(Person3)
def isStandard(passwd):
if len(passwd) < 8 or len(passwd) > 16:
return False
return True
def Login():
global Person
name = input().strip()
passwd = input().strip()
p = Person(name, passwd)
if isStandard(passwd):
for user in users:
if p.dump() == user.dump():
print("登录成功!")
return True
print("登录失败!")
else:
print("格式错误,请输入8~16位数字的密码")
return Login()
if __name__ == "__main__":
Login()
运行结果: