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中内置库os与sys模块的详细介绍

    Python内置库os与sys模块的详细介绍 Python中os和sys模块是常用的内置模块,可以方便地操作系统相关的功能和变量,下面详细介绍这两个模块的常用方法和属性。 os模块 os模块提供了许多函数用于操作文件和目录,让Python可以方便地处理文件和目录相关的操作。 常用函数 os.getcwd() 获取当前工作目录的路径。 import os pr…

    python 2023年5月30日
    00
  • python字符串定义的三种方式

    当我们使用Python编程时,字符串是经常使用的数据类型之一。Python提供了三种方法来定义字符串,它们分别是使用单引号、双引号和三引号。下面我们将详细介绍这三种方式。 1. 单引号定义字符串 使用单引号定义字符串是最常见的方法,只需要在单引号之间输入字符串内容即可。示例代码如下: str1 = ‘This is a string example usin…

    python 2023年6月5日
    00
  • Python绘制圣诞树+落叶+雪花+背景音乐+浪漫弹窗 五合一版圣诞树

    下面是详细的Python绘制圣诞树+落叶+雪花+背景音乐+浪漫弹窗的攻略: 一、准备工作 首先,我们需要安装pygame库和pyaudio库。 可以使用以下命令来安装: pip install pygame pip install pyaudio 在绘制圣诞树时,我们还需要利用Python的turtle库。turtle是Python标准库之一,不需要额外安装…

    python 2023年5月18日
    00
  • 你知道怎么从Python角度学习Java基础

    从Python角度学习Java基础 Java和Python是两种不同的编程语言,它们在语法和编程范式上有很大的差异。如果您已经掌握了Python的基础知识,么从Python角度学习Java基础将会更加容易。本文将为您提供一个完整攻略,包括Java的基本语法、面对象编程和异常处理机制,并提供两个示例说明。 1 了解Java的基本语法 Java和Python在语…

    python 2023年5月14日
    00
  • Python 中 Virtualenv 和 pip 的简单用法详解

    Python中Virtualenv和pip的简单用法详解 什么是Virtualenv Virtualenv是Python的一个环境管理工具,它可以在同一台机器上创建多个Python虚拟环境,每个环境都可以安装自己的Python包,互不影响。使用Virtualenv可以在不同的项目中使用不同版本的Python包,还可以防止出现不同项目之间Python包的版本冲…

    python 2023年5月14日
    00
  • python中的计时器timeit的使用方法

    下面就是详细讲解关于“python中的计时器timeit的使用方法”的完整攻略。 一、什么是timeit timeit是Python标准库中的一个工具模块,它是用来度量代码片段运行时间的。在Python中,有多种方式来实现代码的计时,但是在一些特殊场景中,timeit模块是最为方便可靠的。 二、timeit的使用方法 下面是timeit的用法示例: impo…

    python 2023年6月3日
    00
  • 查找NumPy数组元素的和与积

    查找NumPy数组元素的和与积的完整攻略可以分成以下几个步骤: 创建NumPy数组; 查找数组的和和积。 下面我会详细讲解每一个步骤,并提供两个示例来说明。 创建NumPy数组 在Python中使用NumPy库创建数组可以使用numpy.array()函数。该函数的第一个参数可以是列表、元组、其他序列类型或嵌套序列,该函数还可以为数组指定数据类型。下面的示例…

    python-answer 2023年3月25日
    00
  • Google Cloud Dataflow Python SDK 更新

    【问题标题】:Google Cloud Dataflow Python SDK updatesGoogle Cloud Dataflow Python SDK 更新 【发布时间】:2023-04-07 12:31:01 【问题描述】: 在使用 Google Cloud Dataflow Python SDK 时,开始从 Cloud Storage 读取大量数…

    Python开发 2023年4月8日
    00
合作推广
合作推广
分享本页
返回顶部