写点什么

软件测试 / 测试开发丨 Python 装饰器 学习笔记

作者:测试人
  • 2023-07-27
    北京
  • 本文字数:756 字

    阅读完需:约 2 分钟

免费领取:测试资料+性能测试+测试用例+简历模板+测试文档

本文为霍格沃兹测试开发学社学员学习笔记分享

原文链接:https://ceshiren.com/t/topic/26293

闭包

函数引用

  • 函数可以被引用

  • 函数可以被赋值给一个变量

def hogwarts():    print("hogwarts")
harry = hogwartsharry()
复制代码
  • 闭包的内部函数中,对外部作用域的变量进行引用

  • 闭包无法修改外部函数的局部变量

  • 闭包可以保存当前的运行环境

def output_student(grade):    def inner(name, gender):        print(f"霍格沃兹测试学社开学啦!\        学生的名称是{name},性别是{gender},        \年级是{grade}")    return inner
student = output_student(1)student("罗恩", "男")student("哈利", "男")student("赫敏", "女")
复制代码

Python 装饰器

为什么要学习装饰器

  • 行业需求: 涉及 Python 技术栈,面试常见题

  • 使用需求: 优化代码的可读性,可维护性

装饰器示例

  • 函数体开始执行与结束执行的时候分别添加打印信息

# 不使用装饰器的代码def timer(func):    print("计时开始")    func()    print("计时结束")
def hogwarts(): print("霍格沃兹测试学院")
timer(hogwarts)

# 使用装饰器的代码def timer(func): def inner(): print("计时开始") func() print("计时结束") return inner
@timerdef hogwarts(): print("霍格沃兹测试学院")
hogwarts()
复制代码

装饰带参数函数

import datetimedef timer(func):    def inner(*args, **kwargs):        # 获取当前时间        start_time = datetime.datetime.now()        func(*args, **kwargs)        end_time = datetime.datetime.now()        print(f"函数的执行时间{end_time-start_time}")    return inner
@timerdef hogwarts(name): print("霍格沃兹测试学社", name)
复制代码


发布于: 刚刚阅读数: 6
用户头像

测试人

关注

专注于软件测试开发 2022-08-29 加入

霍格沃兹测试开发学社,测试人社区:https://ceshiren.com/t/topic/22284

评论

发布
暂无评论
软件测试/测试开发丨Python 装饰器 学习笔记_Python_测试人_InfoQ写作社区