'''
装饰器
概念:是一个闭包,把一个函数当做参数返回一个替代版的函数,本质上就是一个返回函数的函数
'''
#简单的装饰器
def func1():
print("welcome to beijing")
def outer(func):
def inner():
print("******************")
func()
return inner
#f是函数func1的加强版本
f = outer(func1)
f()
"""
#复杂一点的
def outer(func):
def inner(age):
if age<0:
age = 0
func(age)
return inner
#使用@符号将装饰器应用到函数
#@python2.4支持使用@符号
@outer
def say(age):
print("tom is %d years old"%(age))
say(-10) #tom is 0years old
"""
#通用装饰器
def outer(func):
def inner(*args,**kwargs):
#添加修改的功能
print("&&&&&&&&&&&&&&&&&&")
func(*args,**kwargs)
return inner
@outer
def say(name,age):
print("my name is %s,I am %d years old"%(name,age))
say("Tom",99) #my name is Tom,I am 99 years old