Python装饰器简介
装饰器有很多经典的使用场景,例如插入日志、性能测试、事务处理等等。有了装饰器,就可以提取大量函数中与本身功能无关的类似代码,从而达到代码重用的目的。下面举一个小栗子简单说明一下装饰器的使用方法
# 定义四个函数分别计算两个值四则运算的结果def number01(a, b):
return a + bdef number02(a, b):
return a - bdef number03(a, b):
return a * bdef number04(a, b):
return a / b
写完之后在使用过程中发现由于传入的参数不一定都是数字,因此需要判断传入参数的数据类型
def number01(a, b):
if a is int and b is int:
return a + b
return 'is no number'
如果不适用装饰器的话,一般就像上面这样增加一个 if 判断,这样的话需要在四个函数中同时添加判断语句,使代码的重复率增加,如果不仅仅是四个函数的话更是会增加工作量。
下面使用装饰器重新规划一下代码
# 首先需要先定义一个使用函数作为参数的高阶函数,装饰器使用的高阶函数必须要比使用此装饰器的函数提前声明
# 解释一下这个函数,在函数内部又声明了一个返回函数,次返回函数中有一个判断语句判断ab两个值是否为数字
# 如果是数字的话就把 ab两个值作为传入函数sun的参数返回(返回这个函数就代表执行这个函数)
# 如果不是数字就返回一个提示字符串,终止函数运行def judge_number(sun):
def is_number(a, b)
if a is int and b is int:
return sun(a, b)
else:
return 'is no number'
return is_number# 使用@语法表示将 下一行中的函数作为参数传入到装饰器函数中,在本文中也就是 judge_number 函数中
@judge_number
def number01(a, b):
return a + b
【Python装饰器简介】可以看出使用装饰器的方法对原来的代码几乎没有变动
推荐阅读
- Docker应用:容器间通信与Mariadb数据库主从复制
- 人生感悟记#环境仪器宋庆国成长记#072
- python学习之|python学习之 实现QQ自动发送消息
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。
- 逻辑回归的理解与python示例
- python自定义封装带颜色的logging模块
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- 视频转换器哪种好用()
- Python基础|Python基础 - 练习1
- NeuVector 会是下一个爆款云原生安全神器吗()