python装饰器嵌套基础

1 python装饰器嵌套基础

python支持装饰器嵌套,即多个装饰器装饰同一个函数或方法。

1.1 嵌套执行顺序

用法

@a_deco
@b_deco
@c_deco
def test_nest_deco():pass

描述

@a_deco、@b_deco、@c_deco分别占一行,编写在同一个函数或方法的def语句上方。

从def开始,由近到远,依次执行装饰器@c_deco、@b_deco、@c_deco。

等价于

test_nest_deco=a_deco(b_deco(c_deco(test_nest_deco))))

示例

>>> def a_decorator(func):print('a_decorator 被调用')return func
>>> def b_decorator(func):print('b_decorator 被调用')return func
>>> def c_decorator(func):print('c_decorator 被调用')return func
>>> @a_decorator
@b_decorator
@c_decorator
def test_nest_deco():print('test_nest_deco 被调用')c_decorator 被调用
b_decorator 被调用
a_decorator 被调用
>>> test_nest_deco()
test_nest_deco 被调用

1.2 嵌套返回调用对象

描述

装饰器的包装函数,比如a_wrapper(),保存接收到的入参函数,以便包装器调用。

最后执行的包装器a_decorator(),会将返回的包装器a_wrapper赋值给主函数变量名test_nest_deco。

调用主函数test_nest_deco()时,相当于调用最后的包装器a_wrapper()。

示例

>>> def a_decorator(func):print('a_decorator 被调用')def a_wrapper():print(func.__name__.center(50,'='))func()return '返回 a_decorator'return a_wrapper>>> def b_decorator(func):print('b_decorator 被调用')def b_wrapper():print(func.__name__.center(50,'='))func()return '返回 b_decorator'return b_wrapper>>> def c_decorator(func):print('c_decorator 被调用')def c_wrapper():print(func.__name__.center(50,'='))func()return '返回 c_decorator'return c_wrapper>>> @a_decorator
@b_decorator
@c_decorator
def test_nest_deco():print('test_nest_deco 被调用')c_decorator 被调用
b_decorator 被调用
a_decorator 被调用
>>> test_nest_deco()
====================b_wrapper=====================
====================c_wrapper=====================
==================test_nest_deco==================
test_nest_deco 被调用
'返回 a_decorator'
>>> test_nest_deco.__name__
'a_wrapper'

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/611452.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云提示服务器ip暴露该怎么办?-速盾网络(sudun)

当阿里云提示服务器IP暴露的时候,这意味着您的服务器可能面临安全风险,因为黑客可以通过知道服务器的IP地址来尝试入侵您的系统。在这种情况下,您应该立即采取措施来保护您的服务器和数据。以下是一些建议: 更改服务器IP地址&…

MySQL主主复制管理器

目录 MMM(Master-Master replication manager for MvSQL,MySQL主主复制管理器) 关于 MMM 高可用架构的说明如下: ----------------------搭建 MySQL MMM-------------------------------- ---------------------- 搭建 MySQL 多…

‘再战千问:启程你的提升之旅‘,如何更好地提问?

例如,很多时候我们提出一些问题,然而通义千问提供的答案,并非完全符合我们的期望。这并非由于通义千问的智能程度不足,而是提问者的“提问技巧”尚未掌握得当。 难道提问还需要讲究艺术性吗?确实如此。今天&#xff0c…

String intern()方法

String intern 方法有什么作用? String.intern() 是一个 native(本地)方法,其作用是将指定的字符串对象的引用保存在字符串常量池中,并返回常量池中对应的字符串引用。 当使用字面量创建字符串时,Java 会在编译期间自…

TensorRT加速推理入门-1:Pytorch转ONNX

这篇文章,用于记录将TransReID的pytorch模型转换为onnx的学习过程,期间参考和学习了许多大佬编写的博客,在参考文章这一章节中都已列出,非常感谢。 1. 在pytorch下使用ONNX主要步骤 1.1. 环境准备 安装onnxruntime包 安装教程可…

uniapp 多轴图,双轴图,指定哪几个数据在哪个轴上显示

这里使用的在这里导入&#xff0c; 秋云 ucharts echarts 高性能跨全端图表组件 - DCloud 插件市场 这里我封装成一个组件&#xff0c;自适应的&#xff0c;可以直接复制到自己的项目中 <template><qiun-data-charts type"mix":opts"opts":cha…

一网打尽!最佳新闻资讯App推荐,谁是你的首选?

注重个性化推荐&#xff0c;推荐&#xff1a;今日头条、一点资讯 注重传统新闻阅读体验&#xff0c;推荐&#xff1a;网易新闻、新浪新闻、搜狐新闻、东方头条 注重订阅推送阅读体验&#xff0c;推荐&#xff1a;红板报、ZAKER 注重评论和用户社区交互&#xff0c;推荐&…

[后端] 微服务的前世今生

微服务的前世今生 整体脉络: 单体 -> 垂直划分 -> SOA -> micro service 微服务 -> services mesh服务网格 -> future 文章目录 微服务的前世今生单一应用架构特征优点&#xff1a;缺点&#xff1a; 垂直应用架构特征优点缺点 SOA 面向服务架构特征优点缺点 微服…

2024年中国杭州|网络安全技能大赛(CTF)正式开启竞赛报名

前言 一、CTF简介 CTF&#xff08;Capture The Flag&#xff09;中文一般译作夺旗赛&#xff0c;在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF起源于1996年DEFCON全球黑客大会&#xff0c;以代替之前黑客们通过互相发起真实攻击进行技术比拼的…

c++ fork, execl 参数 logcat | grep

Linux进程编程(PS: exec族函数、system、popen函数)_linux popen函数会新建进程吗-CSDN博客 execvp函数详解_如何在C / C 中使用execvp&#xff08;&#xff09;函数-CSDN博客 C语言的多进程fork()、函数exec*()、system()与popen()函数_c语言 多进程-CSDN博客 Linux---fork…

#3. 全排列问题

【问题描述】 输出自然数 1 到 n 所有不重复的排列&#xff0c;即 n 的全排列&#xff0c;要求所产生的任一数字序列中不允许出现重复的数字。 【输入格式】 一个整数n(1≤n≤9) 【输出格式】 按照字典序的顺序输出由 1&#xff5e;n 组成的所有不重复的数字序列&#xff…

生成式人工智能市场规模、趋势和统计数据(2024-2026)

生成式人工智能市场规模、趋势和统计数据&#xff08;2024-2026&#xff09; 目录 生成式人工智能市场规模、趋势和统计数据&#xff08;2024-2026&#xff09;一、生成式人工智能行业亮点二、生成式人工智能市场规模三、生成式人工智能市场增长预测四、生成式人工智能采用统计…

Linux信号处理浅析

一、信号从发送到被处理经历的过程 1、常见概念 (1) 信号阻塞 阻塞&#xff0c;即被进程拉黑&#xff0c;信号被发送后&#xff0c;分为两种情况&#xff0c;一种是被阻塞了&#xff08;被拉黑了&#xff09;&#xff0c;一种是没有被阻塞。 (2) 信号未决 在信号被进程处理…

RT-Thread:SPI万能驱动 SFUD 驱动Flash W25Q64,通过 STM32CubeMX 配置 STM32 SPI 驱动

关键词&#xff1a;SFUD,FLASH,W25Q64&#xff0c;W25Q128&#xff0c;STM32F407 说明&#xff1a;RT-Thread 系统 使用 SPI万能驱动 SFUD 驱动 Flash W25Q64&#xff0c;通过 STM32CubeMX 配置 STM32 SPI 驱动。 提示&#xff1a;SFUD添加后的存储位置 1.打开RT-Thread Sett…

K8S的部署策略,重建更新和滚动更新

Deployment Strategies 部署战略 When it comes time to change the version of software implementing your service, a Kubernetes deployment supports two different rollout strategies: RecreateRollingUpdate 当需要更改实施服务的软件版本时&#xff0c;Kubernetes …

跟着我学Python进阶篇:02.面向对象(上)

往期文章 跟着我学Python基础篇&#xff1a;01.初露端倪 跟着我学Python基础篇&#xff1a;02.数字与字符串编程 跟着我学Python基础篇&#xff1a;03.选择结构 跟着我学Python基础篇&#xff1a;04.循环 跟着我学Python基础篇&#xff1a;05.函数 跟着我学Python基础篇&#…

力扣2696. 删除子串后的字符串最小长度

Problem: 2696. 删除子串后的字符串最小长度 文章目录 思路解题方法复杂度Code 思路 可以知道能够消除的只有AB 和CD 的者两种排列顺序方式&#xff0c;但是也许在发生一次消除后还会引发后续的消除可能性。 元素从前向后进行检测&#xff0c;如果是A或者C进行标记入栈&#xf…

Linux C/C++ 显示NIC流量统计信息

NIC流量统计信息是由操作系统维护的。当数据包通过NIC传输时&#xff0c;操作系统会更新相关的计数器。这些计数器记录了数据包的发送和接收数量、字节数等。通过读取这些计数器&#xff0c;我们可以获得关于网络流量的信息。 为什么需要这些信息? 可以使用这些信息来监控网络…

Java建筑工程建设智慧工地源码

智慧工地管理平台依托物联网、互联网&#xff0c;建立云端大数据管理平台&#xff0c;形成“端云大数据”的业务体系和新的管理模式&#xff0c;从施工现场源头抓起&#xff0c;最大程度的收集人员、安全、环境、材料等关键业务数据&#xff0c;打通从一线操作与远程监管的数据…

C //练习 5-4 编写函数strend(s, t)。如果字符串t出现在字符串s的尾部,该函数返回1;否则返回0。

C程序设计语言 &#xff08;第二版&#xff09; 练习 5-4 练习 5-4 编写函数strend(s, t)。如果字符串t出现在字符串s的尾部&#xff0c;该函数返回1&#xff1b;否则返回0。 注意&#xff1a;代码在win32控制台运行&#xff0c;在不同的IDE环境下&#xff0c;有部分可能需要…