版权声明:本文为博主原创文章,转载请注明原文链接。 https://blog.csdn.net/Frank_Abagnale/article/details/82143756
本文是我在学习时的篇笔记,示例代码可能存在直接引用学习资料的情况。
在看了解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)