python3练习-装饰器
在廖雪峰的官方网站学习装饰器章节时,初步理解类似与面向切面编程。记录一下自己的课后习题解法。
问题:
请编写一个decorator,能在函数调用的前后打印出'begin call'和'end call'的日志。写出一个@log
的decorator,使它既支持:
@log
def f(): pass
又支持:
@log('execute')
def f(): pass
示例代码(个人练习,如有问题欢迎斧正): # ! usr/bin/env python3 # -*- coding:utf-8 -*-import functoolsdef log(*text):def decorator(func):@functools.wraps(func)def warpper(*args,**kw):if(isinstance(text,(list,tuple))):print('Info:' , text)print('begin call %s():' % func.__name__)else:print('begin call %s():' % func.__name__)func(*args,**kw)print('-------','end call %s():' % func.__name__,'--------------')return warpperreturn decorator@log(['execute','beginOtherInfo']) def now():print('test function')@log() def now2():print('test function2') now() now2()
转载于:https://www.cnblogs.com/GYoungBean/p/6268662.html
python3练习-装饰器相关推荐
- Python3中装饰器@typing.overload的使用
typing.py的源码在:https://github.com/python/cpython/blob/main/Lib/typing.py .此模块为类型提示(Type Hints)提供运行时支持 ...
- python3大器----装饰器,迭代器,生成器
目录 一:闭包: 1:闭包的作用和定义: 2:闭包的形成条件: 3:闭包的经典案例: 4:闭包的原理: 5: 闭包中使用外部函数变量: 二:装饰器: 1:装饰器的定义和作用: 2:装饰器经典案例分析: ...
- Python3中装饰器介绍
Python中的装饰器(decorator)是一个接受另一个函数作为参数的函数.装饰器通常会修改或增强它接受的函数并返回修改后的函数.这意味着当你调用一个装饰函数时,你会得到一个与基本定义 ...
- python3层装饰器_python三层装饰器python字符串,数值计算
Python是一种面向对象的语言,但它不像C++一样把标准类都封装到库中,而是进行了进一步的封装,语言本身就集成一些类和函数,比如print,list,dict etc. 给编程带来很大的便捷 Pyt ...
- python3:装饰器的5大用法总结
装饰器,顾名思义,就是给函数作装饰作用的,相当于只是给函数化了一个妆,并没有给他添加额外的代码,但是却增加了新功能,就如同我们在冬天很冷的情况下,想要变暖和(添加新功能),但是我们不是生活在武侠小说里 ...
- python中装饰器修复技术_python3之装饰器修复技术@wraps
普通函数 def f(): """ 这是一个用来测试装饰器修复技术的函数 """ print("哈哈哈") if __n ...
- itext生成pdf paragraph 自动换行_reportlab高级制作多格式PDF和python的class和装饰器复习
1 说明 1.1 reportlab高级制作多格式PDF:即包含文字.表格.柱状图. 1.2 复习python的class和装饰器的高级基础知识. 1.3 列表转换字符串.读取txt文件等python ...
- python3语法糖------装饰器
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """装饰器""" ###### 第一波 ## ...
- python3 装饰器_Python3 装饰器
一 什么是装饰器呢? 装饰器本质上来说就是函数,功能就是为其它函数添加附加功能. 原则: 不修改被修饰函数的源代码 不修改被修饰函数的调用方式 组织结构: 装饰器=高阶函数+函数嵌套+闭包 实例1(P ...
最新文章
- Juniper SRX IPsec *** base route CLI
- UML基础教程(内部使用教程) 非常不错的ppt!!强烈推荐
- linux中查找某一个字符串,Linux系统下,在文件中查找某个字符串
- Java内存模型、volatile、原子性、可见性、有序性、happens-before原则
- mysql常见数据库设计_常见数据库设计
- UML类图中会涉及到的一些概念、关系
- 大数据和人工智能将成消费金融主要驱动力
- 关于微信小程序中uView中通过packer选择器修改表单无法触发form组件的表单验证的问题
- LINUX查看一个进程用的内存准确数量
- HDU4825/5536 [01 字典树/简单字典树更新]
- (php毕业设计)基于php旅游信息网站管理系统源码
- 执行力强的人九个特点
- 还不会用 Python 提取 PDF 表格?三种类型数据,轻松转换成 Excel
- mysql数据库的单引号用法_数据库SQL语句单引号、双引号的用法
- CAD2018下载AutoCAD2018下载安装教程附软件下载
- 保利威视云直播的python API
- eli和字符串(尺取算法)牛客网2020寒假训练营1
- 将视频文件旋转90°的方法
- ubuntu系统的备份和还原
- 第二章:1、复合函数求导
热门文章
- Tensorflow Day18 Convolutional Autoencoder
- RNN-LSTM循环神经网络-03Tensorflow进阶实现
- Android5.0源码分析—— Zygote进程分析
- RSA非对称加密算法之公钥和私钥详细介绍
- android-6.0不支持FloatMath.sqrt(x * x + y * y)
- JZOJ 4919. 【NOIP2017提高组模拟12.10】神炎皇
- python列表切片得到的是列表还是字符串_python中列表的切片问题 python arry怎么取列切片...
- 不用光盘可破解电脑系统密码
- 2019年, image captioning论文汇总
- C++三大继承构造函数的执行顺序详解