《流畅的python》学习日志----装饰器工厂函数
使用装饰器工厂函数实现不同的装饰器行为
想要一个装饰器对不同的函数表现出不同的行为,可以使用装饰器工厂函数,例如:
def decorate(type):def calc(func):if type == 'adam':print('use adam')elif type == 'rmsprop':print('use rmsprop')else:print('None')return funcreturn calc
在这里函数decorate作为一个装饰器工厂函数,它依靠不同的传入参数,实现不同的装饰功能,calc是真正的装饰器,由decorate调用。可以这么使用:
@decorate('adam')
def use_adam_function():pass@decorate('rmsprop')
def use_rms_prop_function():pass@decorate('None')
def use_None():pass
工厂函数decorate接受字符串输入,在calc中对字符串进行检查,从而选择不同的装饰效果,而在函数本体中都是使用pass跳过,运行结果如下:
use adam
use rmsprop
None
《流畅的python》学习日志----装饰器工厂函数相关推荐
- Python学习之==装饰器
在Python中,装饰器和迭代器.生成器都是非常重要的高级函数. 在讲装饰器之前,我们先要学习以下三个内容: 一.函数的作用域 1.作用域介绍 Python中的作用域分为四种情况: L:local,局 ...
- Python学习日志10 - 高阶函数和高级应用
Python学习日志 RBHGO的主页欢迎关注 温馨提示:创作不易,如有转载,注明出处,感谢配合~ 目录 文章目录 Python学习日志 目录 前言 进入正题 Python学习日志10课 - 高阶函数 ...
- python学习之装饰器---转
1. 装饰器入门 1.1. 需求是怎么来的?装饰器的定义很是抽象,我们来看一个小例子. def foo(): print 'in foo()' foo() 这是一个很无聊的函数没错.但是突 ...
- Python学习:装饰器使用,timeit()记录程序运行在哪里,耗时多少
使用装饰器记录函数体运行时间: import time import wraptclass Timing:timings = {}enabled = Falsedef __init__(self, e ...
- Python学习,装饰器,元类
# 函数也是对象,可以把函数赋值给变量,使用变量调用函数def func(x):return x+1plus_one = funcprint(plus_one(1)) #%% # 装饰器的思想是装饰函 ...
- Python: 使用装饰器“@”取得函数执行时间
class A(): Python: 使用装饰器"@"取得函数执行时间 - oldJ的学习笔记 - 博客频道 - CSDN.NET Python: 使用装饰器"@&quo ...
- Noah的学习笔记之Python篇:装饰器
Noah的学习笔记之Python篇: 1.装饰器 2.函数"可变长参数" 3.命令行解析 注:本文全原创,作者:Noah Zhang (http://www.cnblogs.co ...
- 编程学习笔记之python深入之装饰器案例及说明文档[图]
编程学习笔记之python深入之装饰器案例及说明文档[图] 装饰器即在不对一个函数体进行任何修改,以及不改变整体的原本意思的情况下,增加函数功能的新函数,因为这个新函数对旧函数进行了装饰,所以称为装饰 ...
- Python 自制简单实用的日志装饰器
在写代码的时候,往往会漏掉日志这个关键因素,导致功能在使用的时候出错却无法溯源. 其实,只需要写一个非常简单的日志装饰器,我们就能大大提升排查问题的效率. 1.简陋版装饰器 写一个装饰器非常简单,因为 ...
最新文章
- EDM营销中HTML邮件设计的技巧
- java redis设置过期时间_Redis的一些核心原理
- Nginx环境下PHP flush失效的解决方法
- TAdoquery的Filter
- ASP.NET服务器控件开发(2)--继承WebControl类
- 【最短路径Floyd算法详解推导过程】看完这篇,你还能不懂Floyd算法?还不会?...
- C语言一看就能上手的干货!你确定你不来看吗?
- 2021年Z世代“潮力量”洞察报告
- ReedShepp与Dubins path的matlab实现
- Unix系统编程()信号处理器简介
- 如何看待B站疑似源码泄漏的问题?
- 英文数字字母听力模拟的简单实现
- 23种设计模式——适配器模式
- Criteo数据集预处理
- 洛阳理工学院计算机类分数线,2017洛阳理工学院录取分数线
- 银保监机构保险许可证数据(2007-2022年)
- Windows 8.1下释放磁盘空间的指南
- 程序员爆改《GTA OL》代码后加载速度快了 70%,R 星采纳并奖励 1 万美元
- 【SQL】Mysql5.7版本实现row_number分组排序功能
- 5G套餐降价,但价格真的是阻拦消费者升级5G的因素吗?
热门文章
- BZOJ 1552/1506 [Cerc2007]robotic sort
- 将RGB值转换为灰度值的简单算法(转)
- asp.net中上传文件实例
- PCA降维算法原理及代码实现(python和matlab)
- matlab 中imagesc的用法
- 使用echo输出一绝对路径,使用egrep取出其基名
- Python学习笔记:常用内建模块6 (urllib)
- ustc小道消息20220112
- 云炬Android开发笔记 11主界面-商品分类开发(多布局Section RecyclerView)
- extundelete安装_Linux数据安全工具:数据恢复软件extundelete概述