• 经典面试题-Python装饰器


    本文引用自霍格沃兹测试开发学社录播课

    经典面试题-Python装饰器

    霍格沃兹测试学社
    ceshiren.com

    面试问题

    面试官通常会问: 1. python 装饰器的作用是什么? 2. 装饰器的原理与实现?

    面试考察点分析

    1. 是否使用过Python的一些内置装饰器,或者第三方封装的装饰器。
    2. 是否了解装饰器的使用场景,是否有自己封装装饰器并使用。

    技术点分析

    装饰器涉及到的技术点主要有:

    • 闭包函数
    • 装饰器的封装方法

    闭包函数

    函数引用

    • 函数可以被引用
    • 函数可以被赋值给一个变量
    def hogwarts():
        print("hogwarts")
    harry = hogwarts
    harry()
    
    • 1
    • 2
    • 3
    • 4

    闭包函数

    • 闭包的内部函数中,对外部作用域的变量进行引用
    • 闭包无法修改外部函数的局部变量
    • 闭包可以保存当前的运行环境
    def output_student(grade):
        def inner(name, gender):
            print(f"霍格沃兹测试学社开学啦!\n        学生的名称是{name},性别是{gender},
            年级是{grade}")
        return inner
    student = output_student(1)
    student("罗恩", "男")
    student("哈利", "男")
    student("赫敏", "女")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    为什么要学习装饰器

    • 行业需求: 涉及 Python 技术栈,面试常见题
    • 使用需求: 优化代码的可读性,可维护性

    装饰器示例

    • 函数体开始执行与结束执行的时候分别添加打印信息
    # 不使用装饰器的代码
    def timer(func):
        print("计时开始")
        func()
        print("计时结束")
    def hogwarts():
        print("霍格沃兹测试学院")
    timer(hogwarts)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    装饰器

    # 使用装饰器的代码
    def timer(func):
        def inner():
            print("计时开始")
            func()
            print("计时结束")
        return inner
    @timer
    def hogwarts():
        print("霍格沃兹测试学院")
    hogwarts()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    装饰器练习

    • 实现一个计时器的装饰器,计算函数执行时间

    装饰带参数函数

    import datetime
    def 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
    @timer
    def hogwarts(name):
        print("霍格沃兹测试学社", name)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    面试题答案总结

    面试官通常会问: 1. python 装饰器是什么?其作用是什么? 2. 装饰器的原理与实现?

    • 本质就是封装了一个闭包函数,在函数、方法或者类的定义上方添加@装饰器名称进行使用。
    • 优化代码的可读性,可维护性:
  • 相关阅读:
    单指标时间序列异常检测——基于重构概率的变分自编码(VAE)代码实现(详细解释)
    qlib的工作流管理:mlflow机器学习生命周期管理平台
    北京迪文DWIN 4.3吋 DMT48270C043_06WT 触控屏(DGUS II屏) Bring-up
    CASIO程序(线路计算6.0版)
    CNN应用:图片分类
    原型对象、实例、原型链的联系
    kubernetes (k8s) list-watch机制、调度约束
    【微服务容器化】第二章-Docker常用命令
    选择文件如何控制,已经选择了一个文件再选时就必须也在当前文件夹选 js
    【Java】包装类
  • 原文地址:https://blog.csdn.net/Hogwartstester/article/details/126852193