Python学习笔记之装饰器

yizhihongxing

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异常对象Exception基础类异常捕捉

    Python异常对象Exception基础类异常捕捉 在Python的程序执行过程中,如果遇到错误(即异常),Python解释器会停止程序的执行并抛出异常。为了更好地处理这些异常,Python提供了try和except语句来捕捉并处理异常。 try和except语句 在Python中,异常是一个类,它继承自BaseException。当程序出现异常时,Pyt…

    python 2023年5月13日
    00
  • python实现字典(dict)和字符串(string)的相互转换方法

    下面是详细讲解“Python实现字典(dict)和字符串(string)的相互转换方法”的攻略: 将字典转换为字符串 通常,在将字典存储到数据库或将其传输到不同的服务端等情况下,我们需要将字典转换为字符串。Python中有两种方式将字典转换为字符串: 1. json.dumps() 使用json.dump()函数将字典转换为字符串。这个函数使用json模块,…

    python 2023年5月13日
    00
  • python爬虫之requests库的使用详解

    Python爬虫之Requests库的使用详解 什么是Requests库 Requests是一款Python第三方库,用于发送HTTP请求。它十分简单易用,是Python中最常见的HTTP客户端库之一。 Requests库安装方法 使用pip安装Requests库: pip install requests 安装成功后,导入Requests库: import…

    python 2023年5月14日
    00
  • Python3对称加密算法AES、DES3实例详解

    下面是详细讲解“Python3对称加密算法AES、DES3实例详解”的完整攻略,包括算法原理、Python实现和两个示例。 算法原理 对称加密算法是一种常用的加密算法,其基本思想是使用同一个密钥对数据进行加密和解密。常用的对称加密算法包括AES、DES、3DES等。其中,AES是一种高级加密标准,其基本思想是使用一个密钥对数据进行加密和解密密钥长度可以是12…

    python 2023年5月14日
    00
  • numpy和pandas中数组的合并、拉直和重塑实例

    下面是numpy和pandas中数组的合并、拉直和重塑的详细攻略。 合并数组 在numpy中可以通过concatenate、hstack和vstack函数来实现数组的合并。 concatenate concatenate函数可以将两个或多个数组沿着一个现有轴进行拼接。示例代码如下: import numpy as np arr1 = np.array([[1…

    python 2023年6月5日
    00
  • 解决pycharm下pyuic工具使用的问题

    以下是关于解决 PyCharm 下 pyuic 工具使用的问题的详细攻略: 问题描述 在 PyCharm 中使用 pyuic 工具将 Qt Designer 设计的 .ui 文件转换为 Python 代码时,可能会遇到一些问题例如找不到 pyuic 工具、转换后的代码无法运行等。本文将介绍如何解决这些问题。 解决方法 以下是解决 PyCharm 下 pyui…

    python 2023年5月13日
    00
  • python常用数据结构元组详解

    Python常用数据结构元组详解 简介 元组(tuple)是Python中的一种序列类型,与列表(list)类似,但是元组是不可变的,即不可添加、删除或修改元素。元组用小括号括起来,里面的元素用逗号隔开。 创建元组 可以使用小括号创建元组,也可以使用tuple函数将其他序列类型转换为元组。 # 使用小括号创建元组 t1 = (1, 2, 3) # 使用tup…

    python 2023年5月14日
    00
  • python开发之for循环操作实例详解

    当然,我很乐意为您提供“Python开发之for循环操作实例详解”的完整攻略。以下是详细的步骤和示例: Python开发之for循环操作实例详解 在Python中,for循环是一种常用的循环结构,用于遍历可迭代对象中的元素。for循环的语法格式如下: for 变量 in 可迭代对象: 循环体 其中,变量是用于存储可迭代对象中的元素变量名,可迭代对象是一个包含…

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