Python之装饰器笔记
概述:
用于管理和增强函数和类行为的代码
提供一种在函数或类定义中插入自动运行代码的机制
特点 更明确的语法、更高的代码可维护性、更好的一致性
编写
函数基础: 将函数赋给变量、将函数作为参数传递、函数嵌套及跨域访问
函数定义装饰器 通用性更好
"""函数定义装饰器"""
# 通用性更好 # 参数化装饰器
def tags(tag):
def tag_decorator(func):
def wrapper(*args, **kwargs):
return f'<{tag}>{func(*args, **kwargs)}</{tag}>'
return wrapper
return tag_decorator def p_decorator(func):
def wrapper(*args, **kwargs):
return '<p>'+func(*args, **kwargs)+'</p>' return wrapper def div_decorator(func):
def wrapper(*args, **kwargs):
return '<div>{}</div>'.format(func(*args, **kwargs)) return wrapper class Student:
def __init__(self, name):
self.name = name @p_decorator
def get_name(self):
return self.name.upper() @tags('p')
# @p_decorator
def get_text():
return '欢迎学习优品课堂课程' @tags('div')
@tags('p')
# @div_decorator
# @p_decorator
def get_upper_text(text):
return text.upper() if __name__ == '__main__':
print(get_text())
# < p > 欢迎学习优品课堂课程 < / p >
print(get_upper_text('www.codeclassroom.com'))
# < div > < p > WWW.CODECLASSROOM.COM < / p > < / div >
s = Student('Mike')
print(s.get_name())
# < p > MIKE < / p >
类定义装饰器
装饰器参数
"""类定义装饰器""" class P:
def __init__(self, func):
self.func = func def __call__(self, *args, **kwargs):
return '<p>' + self.func(*args, **kwargs) + '</p>' class Student:
def __init__(self, name):
self.name = name
# @P 会出现错误
def get_name(self):
return self.name.upper() @P
def get_text():
return '欢迎学习优品课堂课程'
@P
def get_upper_text(text):
return text.upper() if __name__ == '__main__':
print(get_text())
# < p > 欢迎学习优品课堂课程 < / p >
print(get_upper_text('www.codeclassroom.com'))
# < p > WWW.CODECLASSROOM.COM < / p >
s = Student('John')
print(s.get_name())
# JOHN
Python之装饰器笔记的更多相关文章
- Python闭包装饰器笔记
Python三大器有迭代器,生成器,装饰器,这三个中使用最多,最重要的就是装饰器.本篇将重要从函数嵌套开始讲起,从而引入闭包,装饰器的各种用法等. python中的一切都是一个对象(函数也是) 1.首 ...
- python 3.x 的装饰器笔记
今天学到了python的装饰器,感觉这个东西还是稍微有些复杂,所以记录下来,方便以后的查找.虽然标题是python 3.x的装饰器,但是我也没有怎么用过python 2.x,感觉上应该是和python ...
- Python各式装饰器
Python装饰器,分两部分,一是装饰器本身的定义,一是被装饰器对象的定义. 一.函数式装饰器:装饰器本身是一个函数. 1.装饰函数:被装饰对象是一个函数 [1]装饰器无参数: a.被装饰对象无参数: ...
- Python札记 -- 装饰器补充
本随笔是对Python札记 -- 装饰器的一些补充. 使用装饰器的时候,被装饰函数的一些属性会丢失,比如如下代码: #!/usr/bin/env python def deco(func): def ...
- python基础——装饰器
python基础——装饰器 由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数. >>> def now(): ... print('2015-3-25 ...
- 【转】详解Python的装饰器
原文链接:http://python.jobbole.com/86717/ Python中的装饰器是你进入Python大门的一道坎,不管你跨不跨过去它都在那里. 为什么需要装饰器 我们假设你的程序实现 ...
- 两个实用的Python的装饰器
两个实用的Python的装饰器 超时函数 这个函数的作用在于可以给任意可能会hang住的函数添加超时功能,这个功能在编写外部API调用 .网络爬虫.数据库查询的时候特别有用 timeout装饰器的代码 ...
- python 基础——装饰器
python 的装饰器,其实用到了以下几个语言特点: 1. 一切皆对象 2. 函数可以嵌套定义 3. 闭包,可以延长变量作用域 4. *args 和 **kwargs 可变参数 第1点,一切皆对象,包 ...
- 理解Python中的装饰器//这篇文章将python的装饰器来龙去脉说的很清楚,故转过来存档
转自:http://www.cnblogs.com/rollenholt/archive/2012/05/02/2479833.html 这篇文章将python的装饰器来龙去脉说的很清楚,故转过来存档 ...
随机推荐
- Linux堆的一些基础知识
目录 堆的概述 什么是堆 堆的基本操作 堆操作背后的系统调用 堆的相关数据结构 微观结构 malloc_chuck chunk相关宏 bin 宏观结构 arena heap_info malloc_s ...
- DataSync 异构数据同步
RAC, Data Gurad, Stream 是Oracle 高可用性体系中的三种工具,每个工具即可以独立应用,也可以相互配合. 他们各自的侧重点不同,适用场景也不同. RAC 它的强项在于解决单点 ...
- 流式数据处理在百度数据工厂的应用与实践 原创: 李俊卿 AI前线 今天
流式数据处理在百度数据工厂的应用与实践 原创: 李俊卿 AI前线 今天
- openrstry 限流 是否有清零逻辑
openrstry 限流 是否有清零逻辑 https://github.com/openresty/lua-resty-limit-traffic
- The pom for XXX is missing,no dependency information available
笔者进行性能测试时,碰到如下问题 性能测试代码编写,调试通过之后.使用cmd进入项目根目录,意图打包导出项目中所有的依赖包,以便导入至jmeter工具中 cmd中使用命令:mvn dependency ...
- 将Python的Django框架与认证系统整合的方法
将Python的Django框架与认证系统整合的方法 这篇文章主要介绍了将Python的Django框架与认证系统整合的方法,包括指定认证后台和编写认证后台等内容,需要的朋友可以参考下 将Django ...
- 细说可空类型 nullable PropertyType
可空类型是System.Nullable结构体的实列.一个可空类型代表了相应值类型的正确范围附加null值.这么说来,其实也不是很明子,命题嘛,一般不求易懂,但求准确. 那我就来说说这可空类型吧,上次 ...
- spring mvc 后端获得前端传递过来的参数的方法
1.通过HttpServletRequest 获得 HttpServletRequest.getParameter(参数名),可以获得form表单中传递的参数,或ajax或url中传递过来的参数,如果 ...
- laravel 小知识点
分块导出brokerageCharge = DB::table('表名')$brokerageCharge = $brokerageCharge->chunk(100,function($bro ...
- NASA HEG tool安装心得
自从NASA对MRT工具停止支持后,这个工具的官网也随之打不开无法下载.处理数据当然还是需要官方的工具好一些. 现在NASA推荐使用HEG工具来处理MODIS系列产品,除此之外工具对ASTER, MI ...