Python 带参的装饰器

本文是我在学习时的篇笔记,示例代码可能存在直接引用学习资料的情况。
在看了解Python带参装饰器之前可以先了解一下Python装饰器

#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
    @decorator的用法,装饰器默认它后面的函数是唯一的参数。装饰器的语法允许
我们调用decorator时,提供其它参数,比如@decorator(a)。这样,就为装饰器的编
写和使用提供了更大的灵活性。
    带参的方式其实是在之前不带参数的修饰器的实现上再套一层闭包
'''

# a new wrapper layer
def pre_str(pre=''):
    # old decorator
    def decorator(F):
        def new_F(a, b):
            print pre + "\n"+"input", a, b
            return F(a, b)
        return new_F
    return decorator

# get square sum
@pre_str('^_^')
def square_sum(a, b):
    return a**2 + b**2

# get square diff
@pre_str('T_T')
def square_diff(a, b):
    return a**2 - b**2

## 这个方法是没有修饰器修饰的
def product(x,y):
  return x*y

if __name__ == "__main__":
  print square_sum(3, 4)
  print square_diff(3, 4)
  ## 下面换一种玩法
  f = pre_str("=_=")
  f2 = f(product)
  print f2(3,4)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值