Python:关于装饰器的理解
装饰器的作用,希望这段代码能说明:
1、当需求发生变化时,比如,add_two_same需要新加一个需求时(具体见下面)。
2、当类似的需求是一堆时; 而不仅仅是一个;
如何在不改变原来的函数部分时,我们利用一个框架来解决这个问题?这时…
另外,装饰器没有改变前端的用户体验,加了装饰器的函数就是房子被装修了,房间没变,但墙粉刷了一下,还是用那把钥匙进门…
# add_two_same增加一个新需求:即如果参数最大值不大于100时,输入一句提醒的话。具体如下。def add_two_same(a, b): ## 完全等同下add_two()在没有被装饰前的内容print("a + b : ", a + b)def add_two_new(a, b): ## 思路1: 可以在原来函数上直接修改。add_two_same -> add_two_newvalue = max(a,b) if value < 100:print(f"你数学要加油!100以内的计算以后尽量心算!")print("a + b : ", a + b)else:print("a + b : ", a + b)def my_wrap(func): ## 思路2:设计一个框架,达到不改原函数的情况下,实现一样的需求def f(a,b):value = max(a,b) if value < 100:print(f"你数学要加油!100以内的计算以后尽量心算!")return func(a,b)else:return func(a,b)return f@my_wrap
def add_two(a, b): ## 此部分和add_two_same函数内容完全相同print("a + b : ", a + b)@my_wrap
def subtract(a,b):value = a - bprint("a - b : ",value)
@my_wrap
def multiply(a,b):value = a * bprint("a * b : ",value)
@my_wrap
def divide(a,b):value = a / bprint("a / b : ",value)
@my_wrap
def mode(a,b):value = a // bprint("a // b : ",value)
print("\n")
print("add_two_same: ")
add_two_same(1,2)
print("\n")
print("fix ------->")
print("\n")
print("method 1 : add_two_new: ")
add_two_new(1,2)
print("\n")
print("method 2: @my_wrap: ")
add_two(1,2)
print("\n")
print("wrap的扩展的价值,不仅仅适用于add_two.....,它是一种框架和方法!")
print("subtract: ")
subtract(3,2)
print("divide : ")
divide(3,2)
print("multiply: ")
multiply(3,2)
print("mode : ")
mode(3,2)
下面输出表明:装饰器的效果达到了;另外,也实现了横向扩展。
Python:关于装饰器的理解相关推荐
- Python中装饰器的理解和实现
装饰器的简单理解: 装饰器本质上是一个callable object,它可以在让其他函数在不需要做任何代码的变动的前提下增加额外的功能. 装饰器的应用场景: 装饰器的返回值也是一个函数的对象,它经常用 ...
- python装饰器哪个好_[Python] 对 Python 装饰器的理解心得
最近写一个py脚本来整理电脑中的文档,其中需要检校输入的字符,为了不使代码冗长,想到使用装饰器. 上网搜索有关python的装饰器学习文档,主要看的是AstralWind的一篇博文,以及Limodou ...
- Python(三)对装饰器的理解
装饰器是 Python 的一个重要部分,也是比较难理解和使用好的部分.下面对装饰器做一下简单整理 1. 前言 装饰器实际上是应用了设计模式里,装饰器模式的思想: 在不概念原有结构的情况下,添加新的功能 ...
- python装饰器作用-理解python中的装饰器
一 什么是装饰器? 正如其名,装饰器的作用是为已经存在的对象增加额外功能(装饰),由此可使已有函数在无需代码改动的情况下增加额外功能:装饰器的本质是嵌套的函数且返回函数对象,即闭包.有关闭包的概念,可 ...
- 简单地理解 Python 的装饰器
关于decorator说的比较透彻,作者是一位很善于讲课的人. 本文系转载,作者:0xFEE1C001 原文链接 www.lightxue.com/understand-python-decorato ...
- python装饰器与闭包_python中闭包和装饰器的理解(关于python中闭包和装饰器解释最好的文章)。...
转载:http://python.jobbole.com/81683/ 呵呵!作为一名教python的老师,我发现学生们基本上一开始很难搞定python的装饰器,也许因为装饰器确实很难懂.搞定装饰器需 ...
- python闭包和装饰器的区别_python中闭包和装饰器的理解(关于python中闭包和装饰器解释最好的文章)。(转)...
呵呵!作为一名教python的老师,我发现学生们基本上一开始很难搞定python的装饰器,也许因为装饰器确实很难懂.搞定装饰器需要你了解一些函数式编程的概念,当然还有理解在python中定义和调用函数 ...
- python中装饰器的作用_如何理解Python装饰器
展开全部 理解Python中的装饰器 @makebold @makeitalic def say(): return "Hello" 打印出如2113下的输出: Hello 你会怎 ...
- Python设计模式-装饰器模式
Python设计模式-装饰器模式 代码基于3.5.2,代码如下; #coding:utf-8 #装饰器模式class Beverage():name = ""price = 0.0 ...
- Python的装饰器
详解Python的装饰器 本文源码 https://github.com/tobyqin/python_decorator Python中的装饰器是你进入Python大门的一道坎,不管你跨不跨过去它都 ...
最新文章
- Pytorch的LSTM的理解
- android studio同步代码块,Android Studio快捷键大全
- css 如何 重设 外部样式的属性值_IT兄弟连 HTML5教程 CSS3揭秘 CSS常见的样式属性和值5...
- 玩转GridView
- python软件包自带的集成开发环境-Python: 内置的集成开发环境-IDLE
- union all会影响性能吗_Java 中的 try catch 影响性能吗?
- Java里的按值传递与引用传递
- Java 序列化 之 Serializable
- 对弈程序基本技术----Alpha-Beta搜索
- Coursera自动驾驶课程第1讲:Welcome to the self-driving cars specialization
- Hive安装报错:Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient的解决办法
- 重置mariadb密码
- 关于C# DataGridView 全选与取消的小问题
- SharePoint:扩展DVWP - 第4部分:将DVWP操作链接转为按钮
- 帆软动态分页之嵌套自定义参数据选择行数分页
- 元素命名空间中的“MvcBuildViews”无效
- html帮助文档看不了,Service Log按照文档设置之后,在web页面看不到,帮助文档的图片有点问题(看不到了),能不能处理一下...
- NEWSCTF第一届--官方wp(2021新春赛)
- 服务器自动关机重启1076,状态服务器上的事件 ID 1072 或1076 - ASP.NET | Microsoft Docs...
- 人工智能相关书籍介绍