• 经典面试题-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. 装饰器的原理与实现?

    • 本质就是封装了一个闭包函数,在函数、方法或者类的定义上方添加@装饰器名称进行使用。
    • 优化代码的可读性,可维护性:
  • 相关阅读:
    深入理解 python 虚拟机:GIL 源码分析——天使还是魔鬼?
    虚基类设计 c++
    【免费】2024年全新超强版本itvboxfast如意版影视APP源码 TV+手机双端后台PHP源码
    JS内置对象Math和String
    【C++学习】日期类和内存管理
    4-10构造器
    FPGA_IIC代码-正点原子 野火 小梅哥 特权同学对比写法(2)
    【Vue】通过事件发布订阅实现跨组件传值
    知识产权评估:著作权评估、专利评估、商标评估
    微服务学习 | Ribbon负载均衡、Nacos注册中心、微服务技术对比
  • 原文地址:https://blog.csdn.net/Hogwartstester/article/details/126852193