Python笔记:Python装饰器

python装饰器可以定义如下:输出:python解释器将test_decorator函数作为参数传递给my_decorator函数,并指向了内部函数 wrapper(),内部函数 wrapper() 又会调用原函数 test_decorator(),所以decorator()的执行会先打印'this is wrapper',然后打印'hello world', test_decorator()执行完成后,打印 'bye'...
Python笔记:Python装饰器
装饰器是通过装饰器函数修改原函数的一些功能而不需要修改原函数,在很多场景可以用到它,比如① 执行某个测试用例之前,判断是否需要登录或者执行某些特定操作;② 统计某个函数的执行时间;③ 判断输入合法性等。合理使用装饰器可以极大地提高程序的可读性以及运行效率。本文将介绍Python装饰器的使用方法。
python装饰器可以定义如下:
输出:
python解释器将test_decorator函数作为参数传递给my_decorator函数,并指向了内部函数 wrapper(),内部函数 wrapper() 又会调用原函数 test_decorator(),所以decorator()的执行会先打印'this is wrapper',然后打印'hello world', test_decorator()执行完成后,打印 'bye' ,*args和**kwargs,表示接受任意数量和类型的参数。
装饰器 my_decorator() 把真正需要执行的函数 test_decorator() 包裹在其中,并且改变了它的行为,但是原函数 test_decorator() 不变。
一般使用如下形式使用装饰器:
@my_decorator就相当于 decorator = my_decorator(test_decorator) 语句。
内置装饰器@functools.wrap可用于保留原函数的元信息(将原函数的元信息,拷贝到对应的装饰器函数里)。先来看看没有使用functools的情况:
输出:
从上面的输出可以看出test_decorator() 函数被装饰以后元信息被wrapper() 函数取代了,可以使用@functools.wrap装饰器保留原函数的元信息:
输出:
装饰器可以接受自定义参数。比如定义一个参数来设置装饰器内部函数的执行次数:
输出:
Python 支持多个装饰器嵌套:
装饰的过程:
顺序从里到外:
test_decorator('hello world') 执行顺序和装饰的过程相反。
输出:
类也可以作为装饰器,类装饰器主要依赖__call__()方法,是python中所有能被调用的对象具有的内置方法(python魔术方法),每当调用一个类的实例时,__call__()就会被执行一次。
下面的类装饰器实现统计函数执行次数:
输出:
下面介绍两种装饰器使用场景
统计函数执行所花费的时间
输出:
在使用某些web服务时,需要先判断用户是否登录,如果没有登录就跳转到登录页面或者提示用户登录:
--THE END--
2022-08-29
mengvlog 阅读 30 次 更新于 2025-09-09 08:13:58 我来答关注问题0
  •  赛玖百科小窍门 拿来吧你!Python开发核心知识点笔记!一篇内容学透Python!

    并发编程:多线程、多进程、异步编程等。网络编程:Socket编程、TCP/UDP协议等。C扩展:用C语言编写Python扩展模块。图片展示 以下是一些知识点笔记的部分内容截图:学习路线图 此外,还提供了一份封神级的Python学习路线图,帮助学习者按照正确的学习路径前进,达到事半功倍的效果。学习路线图涵盖了从基础...

  •  赛玖久生活日记 python学习笔记(2)数据类型

    Python学习笔记(2):数据类型在Python中,数据类型是编程的基础,它们决定了数据的存储方式以及可以进行的操作。以下是Python中几种基本数据类型的详细解释:1. 整数(Integer)定义:Python可以处理任意大小的整数,包括正整数、负整数和零。示例:1, 2, 10, 0, -5, -100等。特点:Python的整数类型...

  •  誉祥祥知识 Python笔记—matplotlib 创建图例(plt.figure,plt.subplot,plt.subplots)

    在matplotlib中创建图例,并结合使用plt.figure、plt.subplot、plt.subplots的方法如下:plt.figure:作用:用于创建一个新的图形窗口。图例创建:在创建好图形窗口后,通过绘图命令绘制数据,并使用plt.legend方法添加图例。图例的标签通过在绘图命令中设置label参数来指定。plt.subplot:作用:在已创建的图形...

  •  翡希信息咨询 封神级Python开发核心知识点笔记!一篇带你学透Python!

    一、预备知识 计算机基础:了解计算机的基本组成、操作系统、数据结构等基础知识。编程基础:掌握编程的基本概念、算法和逻辑。二、基础语法 变量与数据类型:包括整数、浮点数、字符串、布尔值等。运算符与表达式:算术运算符、比较运算符、逻辑运算符等。控制结构:条件语句(if...else)、循环语句(for、...

  •  翡希信息咨询 封神级Python开发核心知识点笔记!一篇带你学透Python!

    一、学习路线概览 首先,我们来看一下封神级Python开发的学习路线,它涵盖了从预备知识到高级教程的全方位内容:预备知识:了解Python的历史、特点、安装与环境配置等基础知识。基础语法:掌握Python的基本语法,包括变量、数据类型、运算符、控制结构等。进阶语法:深入学习Python的高级特性,如函数、模块、...

檬味博客在线解答立即免费咨询

Python相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部