python 装饰器 java,python之各种装饰器的使用
"""
装饰器,带参数的装饰器,类的装饰器
判断是否为可迭代的
from collections import Iterable
print(isinstance([1,2,3],Iterable))
"""
# 1、简单的装饰器
def debug(func):
def wrap():
print(f'debug:func name is {func.__name__}')
return func()
return wrap
@debug
def calculate():
return 1+2
print(calculate())
# 2、装饰器带参数,先接受的是参数,后接受的是函数
def debug(parameter):
def wrapper(func):
def wrap():
print(f'debug:func name is {func.__name__}')
print(f'debug:func parameter is {parameter}')
return func()
return wrap
return wrapper
@debug('testdata')
def calculate():
return 1+2
print(calculate())
# 3、装饰带参数的函数,需要将参数给定义的wrap
def debug(func):
def wrap(a, b):
print(f'debug:func name is {func.__name__}')
return func(a, b)
return wrap
@debug
def calculate(a,b):
return a+b
print(calculate(1,2))
"""
函数修饰函数
4、装饰器带参数,同时装饰的函数也带参数
"""
def debug(parameter):
def wrapper(func):
def wrap(c, d):
print(f'debug:func name is {func.__name__}')
print(f'debug:func parameter is {parameter}')
return func(c, d)
return wrap
return wrapper
@debug('data')
def calculate(c, d):
return c*d
print(calculate(5,7))
"""
函数修饰类
5、带参数的函数装饰器 装饰 带参数的类
"""
def debug(parameter):
def inner(func):
def wrap(a,b):
print("class name:", func.__name__)
print("genrator parameter is:", parameter)
return func(a,b)
return wrap
return inner
@debug('get')
class Calculate(object):
def __init__(self,a,b):
self.a = a
self.b = b
def cal(self):
num = self.a + self.b
return num
def sal(self):
cnum = self.a * self.b
return cnum
c = Calculate(3,4)
print(c.cal())
"""
类装饰函数
6,带参数的类装饰器 修饰 带参数的函数
ini里面接受的是装饰器的参数,如果无参数则接受的是函数名
"""
class Debug(object):
def __init__(self,parameter):
self.parameter = parameter
def __call__(self, func):
def wrap(a,b):
print('function name is', func.__name__)
print('debug parameter is', self.parameter)
return func(a,b)
return wrap
@Debug('post')
def calculate(a,b):
c = a * b
return c
print(calculate(2,5))
"""
类装饰类
7 带参数的类装饰器 装饰 带参数的类
"""
class Debug(object):
def __init__(self, parameter):
self.parameter = parameter
def __call__(self, func):
def wraps(a,b):
print('function name is', func.__name__)
print('debug parameter is', self.parameter)
return func(a,b)
return wraps
@Debug('get')
class Calculate(object):
def __init__(self,a,b):
self.a = a
self.b = b
def cal(self):
num = self.a + self.b * self.a
return num
c = Calculate(5,3)
print(c.cal())
python 装饰器 java,python之各种装饰器的使用相关推荐
- java8收集器,Java 8中的收集器collectionAndThen()方法
collectingAndThen()Java Collectors类中的方法使Collector适应于执行其他完成转换.它返回执行下游收集器动作的收集器,然后执行附加的结束步骤. 语法如下.stat ...
- c java python php_php c java python 语言对比
-------------PHP----------------------- 数据类型: String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Ar ...
- mt管理器java版下载_MT管理器2.7app下载-MT管理器2.7下载v2.7.0 稳定清爽版-西西软件下载...
为大家带来MT管理器2.7.0最新版下载!这是一款非常强大的安卓文件管理器软件,新版本增加了可以让用户在线安装和更新插件的插件中心,增加了安装包提取功能,同时还优化文件名排序算法并修复云备份遗漏了文本 ...
- mt管理器java版下载_mt管理器手机版
详情 mt管理器手机版是一款优秀的文件管理的手机app,在mt管理器无广告版中,可以管理你的手机文件,还可以利用手机修改apk,功能强大.mt管理器手机版,保留了原来的双窗口操作方式,新增了许多功能. ...
- moto txt阅读器java版,moto txt阅读器手机版下载
阅读app,用户可以使用它打开各种格式的文本,批量管理书架,快速导入资源,阅读设置随意调整,玩家可以享受全新的阅读体验.软件的功能种类丰富,内容持续更新,快来试试吧! 软件内容 支持java手机直接读 ...
- 摩斯密码Java/Python实现
摩斯密码Java/Python实现 摩斯密码Java/Python实现 摩斯密码Java/Python实现 前言 摘自<犯罪大师>谜题关卡 一.Java实现 二.Python实现 总结 前 ...
- 【Python学习教程】Python列表(list)、元组(tuple)、字典(dict)和集合(set)详解
文章目录 什么是序列,Python序列详解(包括序列类型和常用操作) 序列索引 序列切片 序列相加 序列相乘 检查元素是否包含在序列中 和序列相关的内置函数 Python list列表详解 Pytho ...
- java 8流自定义收集器_Java 8编写自定义收集器简介
java 8流自定义收集器 Java 8引入了收集器的概念. 大多数时候,我们几乎不使用Collectors类中的工厂方法,例如collect(toList()) , toSet()或其他更有趣的方法 ...
- python装饰器-理解Python装饰器(Decorator)
理解Python装饰器(Decorator) Python装饰器看起来类似Java中的注解,然鹅和注解并不相同,不过同样能够实现面向切面编程. 想要理解Python中的装饰器,不得不先理解闭包(clo ...
最新文章
- 用C#操纵IIS(代码)
- 在北京植物园吸烟将被机器人劝阻
- 最强蜗牛击败毁灭机器人_最强蜗牛:恶魔形态解锁攻略
- python 字符编码判断 chardet评测
- 和一场音视频技术大会只有一条网线的距离
- java矩阵加法_在java中的数组加法?
- 【C++ grammar】抽象、封装与this指针
- usb 系统消息_别让 USB 传输速度影响 Android 开发效率
- C#找出接口的所有实现类并遍历执行这些类的公共方法
- windows下如何用python抓取邮件内容和附件_用python下载邮件内容
- 中标麒麟使用centos源_中标麒麟操作系统yum源配置
- CSS3实现缺角矩形,缺角边框以及折角矩形
- 东南大学成贤学院计算机类怎么样,东南大学成贤学院什么专业比较好 怎么选择专业...
- 找100-200以内的质数
- 开发基于 Google Map 的 Android 应用
- 有限元-朗格朗日和欧拉描述的区别
- 基于 SpringMVC 的 POST 提交表单出现 405 错误的解决方法之一
- LOJ #6279. 数列分块入门 3-分块(区间加法、查询区间内小于某个值x的前驱(比其小的最大元素))...
- 各种界面库介绍及比较
- linux驱动相关的一些函数
热门文章
- 【CF603E】Pastoral Oddities cdq分治+并查集
- DP问题之 捞鱼问题
- 转:min(x,y)高效算法
- JS的手写TRIM函数
- [Leetcode][第207题][JAVA][课程表][拓扑排序][DFS]
- 为什么gets如此危险?
- HDU-6180 Schedule
- html代码 打开本地文件,打开本地HTML文件
- c++ 圆上任意点坐标计算_线性代数总结 第三章 向量代数与几何计算(空间平面和直线)...
- 裸奔浏览器_躲进浏览器隐私模式就安全了吗?相当于闭着眼睛裸奔