• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

关于python:Python装饰器简介

python 搞代码 3年前 (2022-02-20) 21次浏览 已收录 0个评论

装璜器有很多经典的应用场景,例如插入日志、性能测试、事务处理等等。有了装璜器,就能够提取大量函数中与自身性能无关的相似代码,从而达到代码重用的目标。

上面举一个小栗子简略阐明一下装璜器的应用办法

# 定义四个函数别离计算两个值四则运算的后果

def number01(a, b):
    return a + b

def number02(a, b):
    return a - b

def number03(a, b):
    return a * b

def 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

能够看出应用装璜器的办法对原来的代码简直没有变动


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于python:Python装饰器简介
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址