Python学习笔记之装饰器

Python学习笔记之装饰器

什么是装饰器?

装饰器是 Python 的一种高级语法,它允许在运行时动态扩展函数或类的功能。装饰器是对函数或类的修饰,可以在不修改这些对象的前提下,为它们添加新的功能或更改其原有的功能。

装饰器的使用场景?

  • 日志记录
  • 性能测试
  • 接口鉴权
  • 缓存
  • 事务处理

装饰器的语法

def decorator(func):
    def wrapper(*args, **kwargs):
        # 添加功能代码
        return func(*args, **kwargs)
    return wrapper

# 使用装饰器
@decorator
def target_func():
    pass

装饰器的示例

1. 记录函数运行时间的装饰器

import time

def time_it(func):
    def wrapper(*args, **kwargs):
        start_time = time.time()
        result = func(*args, **kwargs)
        end_time = time.time()
        print(f'{func.__name__}函数运行时间:{end_time - start_time}秒')
        return result
    return wrapper

@time_it
def fib(n):
    if n <= 0:
        return 0
    elif n == 1:
        return 1
    else:
        return fib(n-1) + fib(n-2)

print(fib(35))

2. 权限验证装饰器

def auth(role):
    def decorator(func):
        def wrapper(*args, **kwargs):
            if role == 'admin':
                return func(*args, **kwargs)
            else:
                return '无权访问该接口'
        return wrapper
    return decorator

@auth(role='admin')
def get_user_info():
    return '用户信息'

print(get_user_info())

上述两个示例分别展示了装饰器应用在记录函数运行时间和接口权限验证方面的场景,并演示了如何使用装饰器实现对函数的扩展和修饰。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python学习笔记之装饰器 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • Python实现字符串匹配的KMP算法

    Python实现字符串匹配的KMP算法 什么是KMP算法? KMP算法是一种字符串匹配算法,可用于在一个字符串中查找另一个字符串出现的位置。它的核心思想是,当子串与主串不匹配时,可以利用已经得到的部分匹配结果,将子串移动到下一个可以匹配的位置,而不是从头开始逐个字符匹配。 KMP算法的步骤 KMP算法的实现主要有以下三个步骤: 预处理模式串 对于模式串的每一…

    python 2023年6月5日
    00
  • 基于Python实现PDF区域文本提取工具

    下面是基于Python实现PDF区域文本提取工具的完整攻略,包括软件安装、库引入、代码实现以及两个示例说明。 1. 软件安装 首先,需要在电脑上安装Python。官方网站下载地址为:https://www.python.org/downloads/。根据自己的系统下载对应的版本进行安装。 在安装Python后,还需要安装一些第三方库,其中涉及到的库有:PyM…

    python 2023年6月5日
    00
  • 利用python实现PSO算法优化二元函数

    下面是详细讲解“利用Python实现PSO算法优化二元函数”的完整攻略。 PSO算法 粒子群优化算法(Particle Swarm Optimization,PSO)是一种基于群体智能的化算法,它模拟了鸟群捕食的行为,通过不断调整粒子的位置和速度来寻找最优解。 PSO法的基本思想是将待化问题看作一个多维空间中的搜索问题,将每个解看作空间中的一个粒子通过不断调…

    python 2023年5月14日
    00
  • python生成ppt的方法

    下面是详细讲解“python生成ppt的方法”的完整攻略: 一、PPT生成工具 Python中有一个叫做python-pptx的库,该库可以让我们使用Python代码来生成Microsoft PowerPoint(简称PPT)格式的文件。 该库支持PPTX文件的创建、修改和保存,功能包括添加幻灯片、添加文本、添加图像等,可实现高度自定义。 具体安装命令如下:…

    python 2023年6月5日
    00
  • 基于python全局设置id 自动化测试元素定位过程解析

    基于Python全局设置ID自动化测试元素定位过程解析 在自动化测试中,元素定位是非常重要的一步。在本文中,我们将介绍如何使用Python全局设置ID来自动化测试元素定位,并提供两个示例,以便更好地理解这个过程。 Python全局设置ID的原理 在自动化测试中,我们通常使用元素的ID来定位元素。但是,有些网站没有为元素设置ID,这时我们可以使用Python全…

    python 2023年5月15日
    00
  • Python从使用线程到使用async/await的深入讲解

    Python从使用线程到使用async/await的深入讲解 1. 线程 1.1 什么是线程? 线程是程序执行流的最小单元,是进程的一个执行单元。线程通过共享运行时环境,可以提高程序的并发性,线程有轻量级、及时性等特点。 1.2 Python的线程模块 Python的标准库threading提供了线程相关的模块,使用起来非常简单。 import thread…

    python 2023年5月19日
    00
  • Python import自己的模块报错问题及解决

    下面是详细的“Python import自己的模块报错问题及解决”教程: 问题描述 在Python开发过程中,我们经常会写一些模块或者包,而在模块和包的导入过程中,有可能会遇到自己模块导入报错的问题,这是很常见的一种错误。这种错误通常表现为: ImportError: cannot import name ‘xxx’ from ‘yyy’ 其中,“xxx”代…

    python 2023年5月13日
    00
  • 详解字符串在Python内部是如何省内存的

    下面是详解字符串在Python内部是如何省内存的完整攻略: 1. 字符串池 Python字符串内部是通过一种叫做“字符串池”的机制来省内存的。所谓字符串池,就是把所有出现过的字符串都保存起来,下次如果有相同的字符串,就直接返回内存中已经保存的那个字符串的引用,而不需要重新创建一遍。这个池子是全局的,对所有的Python代码都是共享的,因此理论上有可能遇到和预…

    python 2023年6月5日
    00
合作推广
合作推广
分享本页
返回顶部