美文网首页
2019-01-05 装饰器

2019-01-05 装饰器

作者: 孟圆的笔记 | 来源:发表于2019-01-05 18:49 被阅读0次

基本:使用闭包完成装饰器。
在调用之前手动包装:

  1 def w1(func):
  2 
  3     def inner():
  4         print("--切面:调用方法前的验证--")
  5         func()
  6 
  7     return inner
  8 
  9 
 10 
 11 def f1():
 12     print("--f1--")
 13 
 14 def f2():
 15     print("--f2--")
 16 
 17 
 18 #先手动调用w1将f1包装再返回
 19 f1 = w1(f1)
 20 f1()
 21 
 22 f2 = w1(f2)
 23 f2()

 

加上注解,就省去手动包装:

 1 def w1(func):
  2     def inner():
  3         print("--切面:调用方法前的验证--")
  4         if True:
  5             func()
  6         else:
  7             print("您未通过验证!")
  8     return inner
  9 
 10 
 11 
 12 @w1   #和 f1 = w1(f1) 一样的效果
 13 def f1():
 14     print("--f1--")
 15 
 16 @w1
 17 def f2():
 18     print("--f2--")
 19 
 20 
 21 
 22 f1()
 23 f2()
--切面:调用方法前的验证--
--f1--
--切面:调用方法前的验证--
--f2--

 
 

例子:

  1 print("遇到 def makeBold(fn):")
  2 def makeBold(fn):
  3     print("正在装饰bold")
  4     def inner():
  5         print("---1---")
  6         return "<b>"+fn()+"</b>"
  7     return inner
  8 
  9 
 10 print("遇到 def makeItalic(fn):")
 11 def makeItalic(fn):
 12     print("正在装饰italic")
 13     def inner():
 14         print("---2---")
 15         return "<i>"+fn()+"</i>"
 16     return inner
 17 
 18 
 19 print("遇到 @makeBold")
 20 @makeBold    #text=makeBold(text)
 21 @makeItalic  #text=makeItalic(text)
 22 def text():
 23     print("---3---")
 24     return "Hello World"
 25 
 26 
 27 print("----调用----")
 28 print(text())
 29 
 30 
遇到 def makeBold(fn):
遇到 def makeItalic(fn):
遇到 @makeBold
正在装饰italic
正在装饰bold
----调用----
---1---
---2---
---3---
<b><i>Hello World</i></b>

相关文章

  • 2019-01-05 装饰器

    基本:使用闭包完成装饰器。在调用之前手动包装: 加上注解,就省去手动包装: 例子:

  • 装饰器

    """@装饰器- 普通装饰器- 带参数的装饰器- 通用装饰器- 装饰器装饰类- 内置装饰器- 缓存装饰器- 类实现...

  • typescript 五种装饰器

    装饰器类型 装饰器的类型有:类装饰器、访问器装饰器、属性装饰器、方法装饰器、参数装饰器,但是没有函数装饰器(fun...

  • python——装饰器详解

    一、装饰器概念 1、装饰器 装饰器:一种返回值也是一个函数的函数,即装饰器。 2、装饰器目的 装饰器的目的:装饰器...

  • Python装饰器

    Python装饰器 一、函数装饰器 1.无参装饰器 示例:日志记录装饰器 2.带参装饰器 示例: 二、类装饰器 示例:

  • Python中的装饰器

    Python中的装饰器 不带参数的装饰器 带参数的装饰器 类装饰器 functools.wraps 使用装饰器极大...

  • 装饰器

    装饰器 decorator类装饰器 带参数的装饰器 举例(装饰器函数;装饰器类;有参与无参) https://fo...

  • TypeScript装饰器

    前言 装饰器分类 类装饰器 属性装饰器 方法装饰器 参数装饰器需要在tsconfig.json中启用experim...

  • python之装饰器模版

    装饰器的作用:装饰器即可以装饰函数也可以装饰类。装饰器的原理:函数也是对象 1.定义装饰器 2.使用装饰器假设de...

  • 装饰器实验

    装饰器实验 说明 ts内包含了四个装饰器,类装饰器、属性装饰器、函数装饰器、参数装饰器,本文中测试一下其的使用。 ...

网友评论

      本文标题:2019-01-05 装饰器

      本文链接:https://www.haomeiwen.com/subject/ytjdrqtx.html