本文是我在学习时的篇笔记,示例代码可能岑在直接引用学习资料的情况。
在看了解Python装饰器之前最好先了解一下Python闭包
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
装饰器可以对一个函数、方法或者类进行加工。
'''
from paramiko.ssh_gss import decoder
'''
先定义两个简单的数学函数,一个用来计算平方和,一个用来计算平方差:
'''
# get square sum
def square_sum(a, b):
return a**2 + b**2
# get square diff
def square_diff(a, b):
return a**2 - b**2
# if __name__ == "__main__":
# print square_sum(3, 4)
# print square_diff(3, 4)
'''
使用装饰器实现每次调函数,都打印函数的入参。
'''
def decorator(F):
def new_F(a, b):
print "input: ", a, b
return F(a, b)
return new_F
'''
上述修饰器看起来像一个闭包的形式。
我们实际上将square_sum或square_diff传递给decorator,并将decorator
返回的新的可调用对象赋给原来的函数名(square_sum或square_diff)。
'''
# if __name__ == "__main__":
# f = decorator(square_diff)
# ret = f(10,5)
# print ret
'''
('input: ', 10, 5)
75
'''
'''
下面直接使用修饰符修饰函数,我们创建一个求乘积的函数,并用修饰器修饰
'''
@decorator
def product(x,y):
return x*y
if __name__ == "__main__":
ret = product(4,5)
print ret