python第五次作业
1.请实现一个装饰器,每次调用函数时,将函数名字以及调用此函数的时间点写入文件中
# 导入datetime模块,用于获取当前时间并格式化输出
import datetime# 定义一个装饰器工厂函数log_funcName_time,它接受一个参数time
def log_funcName_time(time):# 定义一个装饰器函数log_decorator,它将被用来装饰目标函数def log_decorator(func):# 定义一个包装器wrapper,它将替换原始函数的行为def wrapper(*args, **kwargs):# 首先调用原始函数,执行其功能func(*args, **kwargs)# 使用with语句打开文件"decorator.txt"以追加模式('a')with open("decorator.txt", "a") as f:# 向文件写入函数名和给定的时间点信息f.write(f"函数名:{func.__name__}----时间点:{time}\n") # 添加换行符以便于阅读# 返回包装器函数,使其可以替代原函数return wrapper# 返回装饰器函数return log_decorator# 使用装饰器工厂函数log_funcName_time,传入当前时间(格式化为字符串)
@log_funcName_time(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
# 定义一个被装饰的函数test
def test():# 函数执行内容:打印一条消息指示操作完成print("已写入文件中")# 调用test函数,触发装饰器的行为
test()

2.编写一个装饰器,每执行一个函数,记录函数名称及函数执行时间,并写入log.text文件中
import timedef calculate_execution_time(func):"""这是一个装饰器,用于计算并打印被装饰函数的执行时间"""def wrapper(*args, **kwargs):start_time = time.time() # 记录函数开始执行的时间res = func(*args, **kwargs) # 执行函数end_time = time.time() # 记录函数结束执行的时间execution_time = end_time - start_time # 计算执行时间with open("log.txt", "a") as f:f.write(f"{func.__name__} 函数执行时间: {execution_time:.6f} 秒")return resreturn wrapper# 使用装饰器
@calculate_execution_time
def test(n):"""示例函数,执行一些操作"""total = 0for i in range(n):total += ireturn total# 调用示例函数
res = test(1000000)
print(f"结果: {res}")

3.使用with语法完成文件的复制
with open("file.txt", "r+") as f1, open("file_copy.txt", "r+") as f2:#打开文件f2.write(f1.read())#复制文件

4.完成登录系统,登录时数据使用序列化和反序列化
import pickle# 使用pickle模块对用户名和密码进行序列化模拟数据库中存储的状态
# 注意:真实场景中不应直接存储明文密码,此处仅为示例
username_mysql = pickle.dumps("zhangsan") # 序列化用户名
password_mysql = pickle.dumps("123") # 序列化密码# 定义一个装饰器login_serizl,用于序列化登录函数的参数
def login_serizl(func):# 定义内层函数wrapper,它会在装饰器被应用时替代原函数def wrapper(*args, **kwargs):# 获取传入的用户名和密码参数username, password = args # 假设装饰的函数只接受两个位置参数# 对传入的用户名和密码进行序列化处理username = pickle.dumps(username)password = pickle.dumps(password)# 重新打包序列化后的参数,准备传递给被装饰的函数args = (username, password) # 注意:此处直接赋值为元组,无需使用**解包# 调用被装饰的函数,并传递序列化后的参数,返回其执行结果return func(*args, **kwargs)# 返回装饰过的函数return wrapper# 使用装饰器login_serizl修饰login函数
@login_serizl
def login(username, password):# 打印接收到的(已序列化)用户名和密码,实际操作中应进行解序列化比较print(username, password)# 模拟验证过程,比较序列化的输入与预设的序列化数据库值# 注意:此处比较逻辑应先进行反序列化,这里为了简化直接比较序列化后的值return "success" if username == username_mysql and password == password_mysql else "failure"# 主程序入口
if __name__ == '__main__':# 从用户处获取输入的用户名和密码username = input("请输入用户名:").strip()password = input("请输入密码:").strip()# 调用login函数进行登录验证,装饰器会自动处理参数序列化result = login(username, password)# 打印登录结果print(result)

相关文章:
python第五次作业
1.请实现一个装饰器,每次调用函数时,将函数名字以及调用此函数的时间点写入文件中 # 导入datetime模块,用于获取当前时间并格式化输出 import datetime# 定义一个装饰器工厂函数log_funcName_time,它接受一个参数time def log_fu…...
JS面向对象编程
目录 实例对象与new命令this关键字对象的原型和继承Object对象的相关方法浅拷贝和深拷贝严格模式实例对象与new命令 构造函数 构造函数的特点有两个: 函数体内部使用了this关键字,代表了所要生成的对象实例。生成对象的时候,必须使用new命令。var Vehicle...
kotlin1.8.10问题导致gson报错TypeToken type argument must not contain a type variable
书接上回,https://blog.csdn.net/jzlhll123/article/details/139302991。 之前我发现gson报错后: gson在2.11.0给我的kotlin项目代码报错了。 IllegalArgumentException: TypeToken type argument must not contain a type variable 上次解释原因是因为&…...
数据库漫谈-国产数据库
国产数据库突然大量出现,下表列出(按首字母排序 ) AISWare AntDB,亚信科技。 AliSQL,阿里云。 Analyticdb,阿里云。 ArkDB,北京极数云舟科技有限公司。 CynosDB,腾讯云 DM&…...
小白跟做江科大32单片机之光敏传感器控制蜂鸣器
代码部分 1.思路 通过光敏电阻,控制蜂鸣器的发声 2.butter.h代码 #ifndef _BUTTER__H #define _BUTTER__H void butter_Init(void); void butter_on(void); void butter_off(void); #endif 3.butter.c代码 #include "stm32f10x.h" void butter…...
使用 Django Channels 构建实时聊天应用(包含用户认证和消息持久化)
文章目录 准备工作创建 Django 项目创建应用程序配置项目编写 Consumer编写路由创建 URL 路由运行应用用户认证消息持久化显示历史消息结论 Django Channels 是 Django 的一个扩展,允许在 Web 应用中添加实时功能,例如 Websockets、HTTP2 和其他协议。本…...
【Elasticsearch】es基础入门-03.RestClient操作文档
RestClient操作文档 示例: 一.初始化JavaRestClient (一)引入es的RestHighLevelClient依赖 <!--elasticsearch--> <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest…...
LeetCode - 二分查找(Binary Search)算法集合(Python)[左右边界|旋转数组|双列表]
欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/139419653 二分查找,也称为折半查找,是一种在有序数组中查找特定元素的高效算法。其基本原理是将待搜索的区间分成两半&am…...
android睡眠分期图
一、效果图 做医疗类项目,经常会遇到做各种图表,本文做的睡眠分期图。 二、代码 引入用到的库 api joda-time:joda-time:2.10.1 调用代码 /*** 睡眠* 分期*/private SleepChartAdapter mAdapter;private SleepChartAttrs mAttrs;private List<SleepI…...
2023年信息素养大赛小学组C++智能算法复赛真题
今天给大家分享2023年全国青少年信息素养大赛小学组C智能算法挑战赛复赛里面的一套真题,希望有助于大家了解复赛的难度及备考。 其他真题下载:网盘-真题-信息素养大赛...
独立游戏开发的 6 个步骤
💂 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】🤟 一站式轻松构建小程序、Web网站、移动应用:👉注册地址🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交…...
Stable Diffusion AI绘画:从创意词汇到艺术图画的魔法之旅
文章目录 一、Stable Diffusion的工作原理二、从提示词到模型出图的过程三、Stable Diffusion在艺术创作中的应用《Stable Diffusion AI绘画从提示词到模型出图》内容简介作者简介楚天 目录前言/序言本书特色特别提示 获取方式 在科技的飞速发展中,Stable Diffusion…...
使用C++实现高效的套接字连接池
在现代网络应用中,高效管理网络连接是实现高并发和低延迟的重要因素。下面将详细介绍如何使用C实现一个高效的套接字连接池,以便在需要时快速复用连接,从而提高系统性能和资源利用率。 一、什么是连接池? 连接池是一种管理网络连…...
个人百度百科怎么创建
编辑百度词条是一个相对简单的流程,但需要注意的是,并不是所有的词条都可以编辑,部分锁定的词条是无法编辑的,但可以通过官方平台申请解封。以下百科优化网yajje分享是详细的步骤: 注册百度账号 首先,用户…...
Nvidia Jetson/Orin +FPGA+AI大算力边缘计算盒子:潍柴雷沃智慧农业无人驾驶
潍柴雷沃智慧农业科技股份有限公司,是潍柴集团重要的战略业务单元,旗下收获机械、拖拉机等业务连续多年保持行业领先,是国内少数可以为现代农业提供全程机械化整体解决方案的品牌之一。潍柴集团完成对潍柴雷沃智慧农业战略重组后,…...
ICPC训练赛补题集
ICPC训练赛补题集 文章目录 ICPC训练赛补题集D - Fast and Fat (负重越野)I-路径规划G. Inscryption(邪恶铭刻)NEW Houses雪中楼(西安交通大学)L.BracketGenerationE - Checksum D - Fast and Fat (负重越野) 原题链接:原题链接 题意:体重大的背体重小的…...
The First项目报告:解读去中心化衍生品交易所AVEO
2023 年12月8日凌晨,Solana 生态 MEV 基础设施开发商 Jito Labs 开放了 JTO 空投申领窗口,JTO 的价格在开盘短暂震荡后迅速攀高,一度触及 4.94 美元。 JTO 是加密社区这两日关注的热门标的,而在这场讨论中,除 Solana …...
Docker 快速更改容器的重启策略(Restart Policies)以及重启策略详解
目录 1. 使用 docker update 命令2. 在启动容器时指定重启策略3. 在 Docker Compose 文件中指定重启策略4. 总结 官方文档:Start containers automatically 1. 使用 docker update 命令 Docker 提供了 docker update 命令,可以在容器运行时更改其重启策…...
docker 启动关闭,设置仓库地址
1. 配置/etc/docker/daemon.json cat /etc/docker/daemon.json# 内容 {"registry-mirrors": ["https://0nth4654.mirror.aliyuncs.com"],"insecure-registries": ["harbor.domain.io"] }2. 配置systemd启动文件 和方法1配置会有冲突&a…...
二叉树的链式结构实现
前言 该篇是在二叉树介绍及堆-CSDN博客的基础上的。该篇会有点抽象大家要自己多画画图自己感受一下。现在我们开始吧! 在学习二叉树基本操作时,我们需要先有一个现成的二叉树。来方便我们练习。因为现在我们对二叉树的理解也并不是很深入。在这里创建一个…...
大一新生怎么合理利用github?用好Github
使用Github也有十几年了,说说我的感受和日常用法如下: 第一想到是如何找有趣的项目,比如通过Gitub Trending找最近流行的项目,把握开源社区的风向解决问题,比如经常用到XX软件出Bug了,第一想到去对应的开源…...
一句指令就能完成跨系统操作?——2026企业级智能体技术路径深度拆解
站在2026年的时间节点回望,企业数字化转型已从“流程驱动”全面转向“智能体驱动”。过去,跨系统操作往往意味着繁杂的API对接或编写脆弱的自动化脚本。而今,以实在智能推出的实在Agent为代表的方案,实现了“一句指令,…...
初创团队如何利用Taotoken统一管理多项目的AI模型调用
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 初创团队如何利用Taotoken统一管理多项目的AI模型调用 对于初创团队而言,同时推进多个小项目是常态。每个项目可能都需…...
别再死记硬背了!用Multisim仿真软件,5分钟搞懂三极管放大电路的静态工作点设置与失真分析
用Multisim玩转三极管放大电路:静态工作点设置与失真分析实战指南 刚接触模拟电路时,三极管放大电路就像一道难以逾越的门槛。那些密密麻麻的公式、抽象的特性曲线,让多少电子工程专业的学生在深夜实验室里抓耳挠腮。但今天,我要告…...
LoRA微调、DINOv2视觉基础模型与CLIP驱动编辑实战指南
1. 项目概述:这不是一份新闻简报,而是一份AI领域从业者的“十月实战观测手记”2021年10月,AI圈没有爆炸性突破,但有一股沉潜的力量在积蓄——模型能力正从“能跑通”加速转向“敢落地”。我翻遍当月所有主流技术博客、会议预印本、…...
市面上有哪些是真正性价比高的降AIGC软件(轻松压低AI生成疑似率)
最崩溃的不是查重难题,而是查重达标却AI率超标亮红灯!很多工具只会简单同义词替换、浅层改字,根本洗不掉AI专属句式、行文逻辑和高频模板话术,学校AIGC检测一查一个准,论文直接翻车。 本篇结合全网实测数据,…...
ESP32如何实现专业级音频录制?探索开源录音解决方案
ESP32如何实现专业级音频录制?探索开源录音解决方案 【免费下载链接】esp32_SoundRecorder ESP32 Sound recorder with simple code in arduino-esp32. (I2S interface) 项目地址: https://gitcode.com/gh_mirrors/es/esp32_SoundRecorder 在物联网和嵌入式开…...
终极3D转2D视频转换器:让VR内容在普通设备上“活“起来
终极3D转2D视频转换器:让VR内容在普通设备上"活"起来 【免费下载链接】VR-reversal VR-Reversal - Player for conversion of 3D video to 2D with optional saving of head tracking data and rendering out of 2D copies. 项目地址: https://gitcode.…...
告别闪烁!用STM32和Simulink搞定LED的PWM调光(附仿真文件)
告别闪烁!用STM32和Simulink搞定LED的PWM调光(附仿真文件) LED照明在医疗设备、植物工厂等场景中,对光源稳定性要求极高。传统调光方案常因电路噪声或控制算法缺陷导致肉眼可见的闪烁,这不仅影响用户体验,更…...
Coq终极实践指南:深入解析形式化证明系统架构与应用
Coq终极实践指南:深入解析形式化证明系统架构与应用 【免费下载链接】coq The Rocq Prover is an interactive theorem prover, or proof assistant. It provides a formal language to write mathematical definitions, executable algorithms and theorems togeth…...

