"""

装饰器,带参数的装饰器,类的装饰器

判断是否为可迭代的

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之各种装饰器的使用相关推荐

  1. java8收集器,Java 8中的收集器collectionAndThen()方法

    collectingAndThen()Java Collectors类中的方法使Collector适应于执行其他完成转换.它返回执行下游收集器动作的收集器,然后执行附加的结束步骤. 语法如下.stat ...

  2. c java python php_php c java python 语言对比

    -------------PHP----------------------- 数据类型: String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Ar ...

  3. mt管理器java版下载_MT管理器2.7app下载-MT管理器2.7下载v2.7.0 稳定清爽版-西西软件下载...

    为大家带来MT管理器2.7.0最新版下载!这是一款非常强大的安卓文件管理器软件,新版本增加了可以让用户在线安装和更新插件的插件中心,增加了安装包提取功能,同时还优化文件名排序算法并修复云备份遗漏了文本 ...

  4. mt管理器java版下载_mt管理器手机版

    详情 mt管理器手机版是一款优秀的文件管理的手机app,在mt管理器无广告版中,可以管理你的手机文件,还可以利用手机修改apk,功能强大.mt管理器手机版,保留了原来的双窗口操作方式,新增了许多功能. ...

  5. moto txt阅读器java版,moto txt阅读器手机版下载

    阅读app,用户可以使用它打开各种格式的文本,批量管理书架,快速导入资源,阅读设置随意调整,玩家可以享受全新的阅读体验.软件的功能种类丰富,内容持续更新,快来试试吧! 软件内容 支持java手机直接读 ...

  6. 摩斯密码Java/Python实现

    摩斯密码Java/Python实现 摩斯密码Java/Python实现 摩斯密码Java/Python实现 前言 摘自<犯罪大师>谜题关卡 一.Java实现 二.Python实现 总结 前 ...

  7. 【Python学习教程】Python列表(list)、元组(tuple)、字典(dict)和集合(set)详解

    文章目录 什么是序列,Python序列详解(包括序列类型和常用操作) 序列索引 序列切片 序列相加 序列相乘 检查元素是否包含在序列中 和序列相关的内置函数 Python list列表详解 Pytho ...

  8. java 8流自定义收集器_Java 8编写自定义收集器简介

    java 8流自定义收集器 Java 8引入了收集器的概念. 大多数时候,我们几乎不使用Collectors类中的工厂方法,例如collect(toList()) , toSet()或其他更有趣的方法 ...

  9. python装饰器-理解Python装饰器(Decorator)

    理解Python装饰器(Decorator) Python装饰器看起来类似Java中的注解,然鹅和注解并不相同,不过同样能够实现面向切面编程. 想要理解Python中的装饰器,不得不先理解闭包(clo ...

最新文章

  1. 用C#操纵IIS(代码)
  2. 在北京植物园吸烟将被机器人劝阻
  3. 最强蜗牛击败毁灭机器人_最强蜗牛:恶魔形态解锁攻略
  4. python 字符编码判断 chardet评测
  5. 和一场音视频技术大会只有一条网线的距离
  6. java矩阵加法_在java中的数组加法?
  7. 【C++ grammar】抽象、封装与this指针
  8. usb 系统消息_别让 USB 传输速度影响 Android 开发效率
  9. C#找出接口的所有实现类并遍历执行这些类的公共方法
  10. windows下如何用python抓取邮件内容和附件_用python下载邮件内容
  11. 中标麒麟使用centos源_中标麒麟操作系统yum源配置
  12. CSS3实现缺角矩形,缺角边框以及折角矩形
  13. 东南大学成贤学院计算机类怎么样,东南大学成贤学院什么专业比较好 怎么选择专业...
  14. 找100-200以内的质数
  15. 开发基于 Google Map 的 Android 应用
  16. 有限元-朗格朗日和欧拉描述的区别
  17. 基于 SpringMVC 的 POST 提交表单出现 405 错误的解决方法之一
  18. LOJ #6279. 数列分块入门 3-分块(区间加法、查询区间内小于某个值x的前驱(比其小的最大元素))...
  19. 各种界面库介绍及比较
  20. linux驱动相关的一些函数

热门文章

  1. 【CF603E】Pastoral Oddities cdq分治+并查集
  2. DP问题之 捞鱼问题
  3. 转:min(x,y)高效算法
  4. JS的手写TRIM函数
  5. [Leetcode][第207题][JAVA][课程表][拓扑排序][DFS]
  6. 为什么gets如此危险?
  7. HDU-6180 Schedule
  8. html代码 打开本地文件,打开本地HTML文件
  9. c++ 圆上任意点坐标计算_线性代数总结 第三章 向量代数与几何计算(空间平面和直线)...
  10. 裸奔浏览器_躲进浏览器隐私模式就安全了吗?相当于闭着眼睛裸奔