python练习五

Title1:请实现一个装饰器,每次调用函数时,将函数名字以及调用此函数的时间点写入文件中

代码:

python 复制代码
import time
time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())  # 获取当前的时间戳
# 定义一个有参装饰器来实现写入文件时加上时间和函数名
def tianjia(time):
    def logo(func):
        def wrapper():
            with open("file.text", "w", encoding="utf-8") as f:
                f.write(f"时间点{time},文件名:{func.__name__}\n")
                res = func()
                f.write(f"执行结果:{res}\n")

        return wrapper

    return logo



@tianjia(time)
def main():
    print("Hello")

if __name__ == '__main__':
    main()

Title2:编写一个装饰器,每执行一个函数,记录函数名称及函数执行时间,并写入log.text文件中

代码:

python 复制代码
import time
def w_file_time(time):
    def logo(func):
        def wrapper():
            with open("log.text", "a", encoding='utf-8') as f:
                f.write(time.strftime("%Y-%m-%d:%H--%M--%S", time.localtime()) + "\n函数名称:" + w_file_time.__name__)
                func()
        return wrapper
    return logo


@w_file_time(time)
def w_file():
    with open('test.txt', 'a') as f:
        f.write("这是一个函数")

if __name__ == '__main__':
    w_file()

Title3:使用with语法完成文件的复制

代码:

python 复制代码
with open("cope.text", 'a+', encoding='utf-8') as f, open("stickup.text", 'w+', encoding='utf-8') as t:
    f.write("这是一个复制的文件")  # 标识一下复制的文件
    t.write("粘贴后:" + f.read())  # 把查看到的内容写入别名为t的文件中同时加上一段文件进行标识
    print(t)

Title4:完成登录系统,登录时数据使用序列化和反序列化

代码:

python 复制代码
import pickle
# 定义一个初始的用户列表,由于是登录验证有用户名和密码,所以里面的元素是字典
users_list = [
    {"username": "John", "password": "123456"},
    {"username": "lisi", "password": "123456"},
    {"username": "wangwu", "password": "123456"},

]
# 打开文件进行序列化,是假设以上的users_list是在一个文件中的而不是在代码中
with open("user_list.text", "wb") as f:
    pickle.dump(users_list, f)


# 定义一个装饰器使得登录的函数可以实现序列化和反序列化
def serialization(func):
    def wrapper():
        with open('user_list.text', 'rb') as file:
            users = pickle.load(file)
        func(users)

    return wrapper


@serialization  # 通过装饰器来使得简单的一个登录需要序列化和反序列化
# 定义一个登录的函数
def loging(users):
    username = input("请输入你的用户名:")
    password = input("请输入你的密码:")
    # 判断用户名和密码是否与用户列表中的匹配
    for user in users:
        if user['username'] == username and user['password'] == password:  
            print('用户名和密码匹配成功')
            break
    else:
        print('用户名和密码匹配不成功')


if __name__ == '__main__':
    loging()
相关推荐
YuanlongWang4 分钟前
C# 基础——值类型与引用类型的本质区别
java·jvm·c#
峰顶听歌的鲸鱼16 分钟前
1.云计算与服务器基础
运维·服务器·笔记·云计算·学习方法
波诺波19 分钟前
通用装饰器示例
开发语言·python
IDOlaoluo27 分钟前
dotnet-sdk-5.0.400-linux-x64.tar.gz 安装教程(Linux 手动安装 .NET 5.0.400 SDK 步骤)
运维·服务器
Kay_Liang28 分钟前
大语言模型如何精准调用函数—— Function Calling 系统笔记
java·大数据·spring boot·笔记·ai·langchain·tools
自由的疯1 小时前
Java 如何学习Docker
java·后端·架构
程序员爱钓鱼1 小时前
Python编程实战 · 基础入门篇 | 变量与命名规范
后端·python
自由的疯1 小时前
Java Docker本地部署
java·后端·架构
007php0071 小时前
猿辅导Java面试真实经历与深度总结(二)
java·开发语言·python·计算机网络·面试·职场和发展·golang
摇滚侠1 小时前
Spring Boot 3零基础教程,WEB 开发 内容协商机制 笔记34
java·spring boot·笔记·缓存