当前位置: 首页 > news >正文

Python训练营打卡DAY27

DAY 27 函数专题2:装饰器

知识点回顾:

  1. 装饰器的思想:进一步复用
  2. 函数的装饰器写法
  3. 注意内部函数的返回值

作业:

编写一个装饰器 logger,在函数执行前后打印日志信息(如函数名、参数、返回值)

@logger
def multiply(a, b):return a * bmultiply(2, 3)  
# 输出:
# 开始执行函数 multiply,参数: (2, 3), {}
# 函数 multiply 执行完毕,返回值: 6
#normal
import timedef is_prime(num):if num < 2:return Falseelif num == 2:return Trueelse:for i in range(2, num):if num % i == 0:return Falsereturn Truedef prime_nums():t1 = time.time()for num in range(2, 10000):if is_prime(num):print(num)t2 = time.time()print(f"执行时间:{t2 - t1}秒")prime_nums()
#decorator
import time
def display_time(func):def wrapper():t1 = time.time()func()t2 = time.time()print(f"函数执行时间: {t2 - t1} 秒")return wrapper
# 继续定义判断质数的函数
def is_prime(num):"""判断一个数是否为素数"""if num < 2:return Falseelif num == 2:return Trueelse:for i in range(2, num):if num % i == 0:return Falsereturn True# 装饰器的标准写法
@display_time
def prime_nums(): # 这2行是一个整体"""找出2到10000之间的所有素数并打印"""for i in range(2, 10000):if is_prime(i):print(i)
prime_nums()#编写一个装饰器 logger,在函数执行前后打印日志信息(如函数名、参数、返回值)
# 输出:
# 开始执行函数 multiply,参数: (2, 3), {}
# 函数 multiply 执行完毕,返回值: 6def logger(func):def wrapper(*args, **kwargs):print(f'开始执行函数 {func.__name__},参数: {args}, {kwargs}')result = func(*args, **kwargs)print(f'函数 {func.__name__} 执行完毕,返回值: {result}')return resultreturn wrapper@logger
def multiply(num1, num2):return num1 * num2multiply(2,3)

@浙大疏锦行-CSDN博客

http://www.dtcms.com/a/195598.html

相关文章:

  • 金属加工液展|切削液展|2025上海金属加工液展览会
  • 嵌入式开发书籍推荐
  • 云服务器的运用自如
  • GraphPad Prism项目的管理
  • 动态规划(2):问题建模与状态设计
  • Review --- 框架
  • 实验-实现向量点积-RISC-V(计算机组成原理)
  • C语言编程中的时间处理
  • Cross-Site Scripting(XSS)
  • Go语言之路————并发
  • 一键清理功能,深度扫描本地存储数据
  • 深度学习驱动下的目标检测技术:原理、算法与应用创新(三)
  • memcached主主复制+keepalive
  • Python多线程实战:提升并发效率的秘诀
  • Linux常用命令42——tar压缩和解压缩文件
  • Python 之类型注解
  • Java项目使用Tomcat启动后JS文件中的中文乱码问题
  • 彻底删除Docker容器中的环境变量
  • 【Win32 API】 lstrcmpA()
  • 第J1周:ResNet-50算法实战与解析
  • entity线段材质设置
  • let、var、const的区别
  • 基于javaweb的SSM驾校管理系统设计与实现(源码+文档+部署讲解)
  • 软考第六章知识点总结
  • 如何安装cuda版本的pytorch
  • PTN中的L2VPN与L3VPN技术详解
  • 时频分析的应用—外部信号的显影和定点清除
  • LLM笔记(七)注意力机制
  • WL-G4048 Multi-Port PCIe 4.0 Switch
  • 学习状态不佳时的有效利用策略